Fork me on GitHub

Changeset a98c7ef in git for modules/Calorimeter.cc


Ignore:
Timestamp:
Oct 1, 2015, 3:21:57 PM (9 years ago)
Author:
Michele Selvaggi <michele.selvaggi@…>
Branches:
ImprovedOutputFile, Timing, dual_readout, llp, master
Children:
fa7f333
Parents:
d77b51d
Message:

fixed eflow at high pt

File:
1 edited

Legend:

Unmodified
Added
Removed
  • modules/Calorimeter.cc

    rd77b51d ra98c7ef  
    426426  Double_t ecalEnergy, hcalEnergy;
    427427  Double_t ecalSigma, hcalSigma;
     428  Double_t ecalTrkSigma, hcalTrkSigma;
     429  Double_t ecalFraction, hcalFraction;
     430 
     431  Int_t pdgCode;
     432  TLorentzVector momentum;
     433  TFractionMap::iterator itFractionMap;
     434 
    428435  Float_t weight, sumWeightedTime, sumWeight;
    429436
    430437  if(!fTower) return;
    431438
     439 
    432440  ecalSigma = fECalResolutionFormula->Eval(0.0, fTowerEta, 0.0, fTowerECalEnergy);
    433441  hcalSigma = fHCalResolutionFormula->Eval(0.0, fTowerEta, 0.0, fTowerHCalEnergy);
     
    501509  // fill energy flow candidates
    502510
    503   // save all the tracks as energy flow tracks
    504   fItTowerTrackArray->Reset();
    505   while((track = static_cast<Candidate*>(fItTowerTrackArray->Next())))
    506   {
    507     fEFlowTrackOutputArray->Add(track);
    508   }
    509 
    510   ecalEnergy -= fTrackECalEnergy;
    511   hcalEnergy -= fTrackHCalEnergy;
     511  // save as eflowtracks only tracks that have better resolution than calo
     512 
     513   fItTowerTrackArray->Reset();
     514   while((track = static_cast<Candidate*>(fItTowerTrackArray->Next())))
     515   {
     516     momentum = track->Momentum;
     517   
     518     pdgCode = TMath::Abs(track->PID);
     519
     520     itFractionMap = fFractionMap.find(pdgCode);
     521     if(itFractionMap == fFractionMap.end())
     522     {
     523       itFractionMap = fFractionMap.find(0);
     524     }
     525
     526     ecalFraction = itFractionMap->second.first;
     527     hcalFraction = itFractionMap->second.second;
     528
     529     // charged particle has to deposit either in ECAL or HCAL
     530 
     531     if(ecalFraction < 1.0E-9 && hcalFraction < 1.0E-9) continue; 
     532     if(ecalFraction > 1.0E-9 && hcalFraction > 1.0E-9) continue; 
     533 
     534     if(ecalFraction > 1.0E-9)
     535     {
     536       if(track->TrackResolution < ecalTrkSigma/momentum.E())
     537       {
     538         ecalTrkSigma = fECalResolutionFormula->Eval(0.0, fTowerEta, 0.0, momentum.E()); 
     539         ecalEnergy -= momentum.E();
     540         fEFlowTrackOutputArray->Add(track);       
     541       }
     542   
     543     }
     544   
     545     if(hcalFraction > 1.0E-9)
     546     {
     547       if(track->TrackResolution < hcalTrkSigma/momentum.E())
     548       {
     549         hcalTrkSigma = fHCalResolutionFormula->Eval(0.0, fTowerEta, 0.0, momentum.E()); 
     550         hcalEnergy -= momentum.E();
     551         fEFlowTrackOutputArray->Add(track);       
     552       }
     553     }
     554  }
    512555
    513556  ecalSigma = fECalResolutionFormula->Eval(0.0, fTowerEta, 0.0, ecalEnergy);
Note: See TracChangeset for help on using the changeset viewer.