Fork me on GitHub

Changes in / [9458a020:9343566] in git


Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • modules/Calorimeter.cc

    r9458a020 r9343566  
    517517  if(energy > 0.0)
    518518  {
    519     if(fTowerPhotonHits > 0 && fTowerTrackHits == 0)
    520     {
    521       fPhotonOutputArray->Add(fTower);
    522     }
    523 
    524     fTowerOutputArray->Add(fTower);
    525   }
    526 
    527   // fill energy flow candidates
    528 
    529   // save all the tracks as energy flow tracks
    530   fItTowerTrackArray->Reset();
    531   while((track = static_cast<Candidate*>(fItTowerTrackArray->Next())))
    532   {
    533     fEFlowTrackOutputArray->Add(track);
    534   }
    535 
    536   ecalEnergy -= fTrackECalEnergy;
    537   hcalEnergy -= fTrackHCalEnergy;
    538 
    539   ecalSigma = fECalResolutionFormula->Eval(0.0, fTowerEta, 0.0, ecalEnergy);
    540   hcalSigma = fHCalResolutionFormula->Eval(0.0, fTowerEta, 0.0, hcalEnergy);
    541 
    542   if(ecalEnergy < fECalEnergyMin || ecalEnergy < fECalEnergySignificanceMin*ecalSigma) ecalEnergy = 0.0;
    543   if(hcalEnergy < fHCalEnergyMin || hcalEnergy < fHCalEnergySignificanceMin*hcalSigma) hcalEnergy = 0.0;
    544 
    545   energy = ecalEnergy + hcalEnergy;
    546 
    547   if(ecalEnergy > 0.0)
    548   {
    549     // create new photon tower
    550     tower = static_cast<Candidate*>(fTower->Clone());
    551 
    552     pt = ecalEnergy / TMath::CosH(eta);
    553 
    554     tower->Momentum.SetPtEtaPhiE(pt, eta, phi, ecalEnergy);
    555     tower->Eem = ecalEnergy;
    556     tower->Ehad = 0.0;
    557 
    558     fEFlowPhotonOutputArray->Add(tower);
    559   }
    560   if(hcalEnergy > 0.0)
    561   {
    562     // create new neutral hadron tower
    563     tower = static_cast<Candidate*>(fTower->Clone());
    564 
    565     pt = hcalEnergy / TMath::CosH(eta);
    566 
    567     tower->Momentum.SetPtEtaPhiE(pt, eta, phi, hcalEnergy);
    568     tower->Eem = 0.0;
    569     tower->Ehad = hcalEnergy;
    570 
    571     fEFlowNeutralHadronOutputArray->Add(tower);
     519     bool isCalPhoton = false;
     520
     521     if(fTowerTrackHits == 0)
     522     {
     523        // We have a CalPhoton when there are NOT tracks and there ARE photon hits
     524        isCalPhoton = (fTowerPhotonHits > 0);
     525     }
     526     else
     527     {
     528         // save all the tracks as energy flow tracks
     529         fItTowerTrackArray->Reset();
     530         while((track = static_cast<Candidate*>(fItTowerTrackArray->Next())))
     531         {
     532            fEFlowTrackOutputArray->Add(track);
     533         }
     534
     535         ecalEnergy -= fTrackECalEnergy;
     536         hcalEnergy -= fTrackHCalEnergy;
     537
     538         ecalSigma = fECalResolutionFormula->Eval(0.0, fTowerEta, 0.0, ecalEnergy);
     539         hcalSigma = fHCalResolutionFormula->Eval(0.0, fTowerEta, 0.0, hcalEnergy);
     540
     541         if(ecalEnergy < fECalEnergyMin || ecalEnergy < fECalEnergySignificanceMin*ecalSigma) ecalEnergy = 0.0;
     542         if(hcalEnergy < fHCalEnergyMin || hcalEnergy < fHCalEnergySignificanceMin*hcalSigma) hcalEnergy = 0.0;
     543
     544         energy = ecalEnergy + hcalEnergy;
     545     }
     546
     547     // If it's NOT a CalPhoton; add the tower as a whole entity.
     548     // Otherwise, the tower will be split into its ECAL and HCAL components,
     549     // then added to fPhotonArray and fTowerArray (respectively).
     550     // By construction (no track hits), no track subtraction will occur
     551     // for CalPhotons
     552     if(!isCalPhoton)
     553        fTowerOutputArray->Add(fTower);
     554
     555     // fill energy flow candidates
     556
     557     if(ecalEnergy > 0.0)
     558     {
     559         // create new photon tower
     560         tower = static_cast<Candidate*>(fTower->Clone());
     561
     562         pt = ecalEnergy / TMath::CosH(eta);
     563
     564         tower->Momentum.SetPtEtaPhiE(pt, eta, phi, ecalEnergy);
     565         tower->Eem = ecalEnergy;
     566         tower->Ehad = 0.0;
     567
     568         fEFlowPhotonOutputArray->Add(tower);
     569         if(isCalPhoton)
     570                      fPhotonOutputArray->Add(tower);
     571     }
     572
     573     if(hcalEnergy > 0.0)
     574     {
     575        // create new neutral hadron tower
     576        tower = static_cast<Candidate*>(fTower->Clone());
     577
     578        pt = hcalEnergy / TMath::CosH(eta);
     579
     580        tower->Momentum.SetPtEtaPhiE(pt, eta, phi, hcalEnergy);
     581        tower->Eem = 0.0;
     582        tower->Ehad = hcalEnergy;
     583
     584        fEFlowNeutralHadronOutputArray->Add(tower);
     585        if(isCalPhoton)
     586           fTowerOutputArray->Add(tower);
     587     }
    572588  }
    573589}
Note: See TracChangeset for help on using the changeset viewer.