CMS 3D CMS Logo

MCPizeroAnalyzer Class Reference

#include <RecoEgamma/Examples/plugins/MCPizeroAnalyzer.h>

Inheritance diagram for MCPizeroAnalyzer:

edm::EDAnalyzer

List of all members.

Public Member Functions

virtual void analyze (const edm::Event &, const edm::EventSetup &)
virtual void beginJob (const edm::EventSetup &)
virtual void endJob ()
 MCPizeroAnalyzer (const edm::ParameterSet &)
virtual ~MCPizeroAnalyzer ()

Private Member Functions

float etaTransformation (float a, float b)
float phiNormalization (float &a)

Private Attributes

TFile * fOutputFile_
std::string fOutputFileName_
TH1F * h_BremEnergy_
TH1F * h_BremFrac_
TH2F * h_EleEvsPhoE_
TH1F * h_MCConvPhoE_
TH1F * h_MCConvPhoEta_
TH1F * h_MCConvPhoPhi_
TH1F * h_MCConvPhoR_
TH1F * h_MCEleE_
TH1F * h_MCEleEta_
TH1F * h_MCElePhi_
TH1F * h_MCPhoE_
TH1F * h_MCPhoEta_
TH1F * h_MCPhoPhi_
TH1F * h_MCPiz1ConEta_
TH1F * h_MCPiz2ConEta_
TH1F * h_MCPizE_
TH1F * h_MCPizEta_
TH1F * h_MCPizMass1_
TH1F * h_MCPizMass2_
TH1F * h_MCPizPhi_
TH1F * h_MCPizUnEta_
std::string HepMCLabel
double mcEta_
double mcPhi_
 global variable for the MC photon
int nEvt_
int nMatched_
std::string SimHitLabel
std::string SimTkLabel
std::string SimVtxLabel
PizeroMCTruthFinderthePizeroMCTruthFinder_


Detailed Description

Definition at line 23 of file MCPizeroAnalyzer.h.


Constructor & Destructor Documentation

MCPizeroAnalyzer::MCPizeroAnalyzer ( const edm::ParameterSet pset  )  [explicit]

Definition at line 45 of file MCPizeroAnalyzer.cc.

00046    : fOutputFileName_( pset.getUntrackedParameter<string>("HistOutFile",std::string("TestConversions.root")) ),
00047      fOutputFile_(0)
00048 {
00049 
00050   
00051 }

MCPizeroAnalyzer::~MCPizeroAnalyzer (  )  [virtual]

Definition at line 55 of file MCPizeroAnalyzer.cc.

References thePizeroMCTruthFinder_.

00055                                     {
00056 
00057 
00058   delete thePizeroMCTruthFinder_;
00059 
00060 }


Member Function Documentation

void MCPizeroAnalyzer::analyze ( const edm::Event e,
const edm::EventSetup  
) [virtual]

Implements edm::EDAnalyzer.

Definition at line 162 of file MCPizeroAnalyzer.cc.

References GenMuonPlsPt100GeV_cfg::cout, lat::endl(), PizeroMCTruthFinder::find(), edm::Event::getByLabel(), h_BremEnergy_, h_BremFrac_, h_EleEvsPhoE_, h_MCConvPhoE_, h_MCConvPhoEta_, h_MCConvPhoPhi_, h_MCConvPhoR_, h_MCEleE_, h_MCEleEta_, h_MCElePhi_, h_MCPhoE_, h_MCPhoEta_, h_MCPhoPhi_, h_MCPiz1ConEta_, h_MCPiz2ConEta_, h_MCPizE_, h_MCPizEta_, h_MCPizMass1_, h_MCPizPhi_, h_MCPizUnEta_, edm::Event::id(), nEvt_, funct::sqrt(), and thePizeroMCTruthFinder_.

00163 {
00164   
00165   
00166   using namespace edm;
00167   const float etaPhiDistance=0.01;
00168   // Fiducial region
00169   const float TRK_BARL =0.9;
00170   const float BARL = 1.4442; // DAQ TDR p.290
00171   const float END_LO = 1.566;
00172   const float END_HI = 2.5;
00173  // Electron mass
00174   const Float_t mElec= 0.000511;
00175 
00176 
00177   nEvt_++;  
00178   LogInfo("MCPizeroAnalyzer") << "MCPizeroAnalyzer Analyzing event number: " << e.id() << " Global Counter " << nEvt_ <<"\n";
00179   //  LogDebug("MCPizeroAnalyzer") << "MCPizeroAnalyzer Analyzing event number: "  << e.id() << " Global Counter " << nEvt_ <<"\n";
00180   std::cout << "MCPizeroAnalyzer Analyzing event number: "  << e.id() << " Global Counter " << nEvt_ <<"\n";
00181 
00183   std::cout  << " MCPizeroAnalyzer Looking for MC truth " << "\n";
00184   
00185   //get simtrack info
00186   std::vector<SimTrack> theSimTracks;
00187   std::vector<SimVertex> theSimVertices;
00188   
00189   edm::Handle<SimTrackContainer> SimTk;
00190   edm::Handle<SimVertexContainer> SimVtx;
00191   e.getByLabel("g4SimHits",SimTk);
00192   e.getByLabel("g4SimHits",SimVtx);
00193   
00194   theSimTracks.insert(theSimTracks.end(),SimTk->begin(),SimTk->end());
00195   theSimVertices.insert(theSimVertices.end(),SimVtx->begin(),SimVtx->end());
00196   std::cout << " MCPizeroAnalyzer This Event has " <<  theSimTracks.size() << " sim tracks " << std::endl;
00197   std::cout << " MCPizeroAnalyzer This Event has " <<  theSimVertices.size() << " sim vertices " << std::endl;
00198   if (  ! theSimTracks.size() ) std::cout << " Event number " << e.id() << " has NO sim tracks " << std::endl;
00199   
00200   
00201   std::vector<PizeroMCTruth> MCPizeroeros=thePizeroMCTruthFinder_->find (theSimTracks,  theSimVertices);  
00202   std::cout << " MCPizeroAnalyzer MCPizeroeros size " <<  MCPizeroeros.size() << std::endl;
00203  
00204   for ( std::vector<PizeroMCTruth>::const_iterator iPiz=MCPizeroeros.begin(); iPiz !=MCPizeroeros.end(); ++iPiz ){
00205  
00206     h_MCPizE_->Fill  ( (*iPiz).fourMomentum().e() );
00207     h_MCPizEta_->Fill  ( (*iPiz).fourMomentum().pseudoRapidity() );
00208     h_MCPizPhi_->Fill  ( (*iPiz).fourMomentum().phi() );
00209 
00210     std::vector<PhotonMCTruth> mcPhotons=(*iPiz).photons();
00211     std::cout << " MCPizeroAnalyzer mcPhotons size " << mcPhotons.size() << std::endl;
00212 
00213     float px = mcPhotons[0].fourMomentum().x() + mcPhotons[1].fourMomentum().x();
00214     float py = mcPhotons[0].fourMomentum().y() + mcPhotons[1].fourMomentum().y();
00215     float pz = mcPhotons[0].fourMomentum().z() + mcPhotons[1].fourMomentum().z();
00216     float e  = mcPhotons[0].fourMomentum().e() + mcPhotons[1].fourMomentum().e();
00217     float invM =  sqrt( e*e - px*px -py*py - pz*pz)*1000;
00218     h_MCPizMass1_ ->Fill (invM);    
00219 
00220     int converted=0;
00221     for ( std::vector<PhotonMCTruth>::const_iterator iPho=mcPhotons.begin(); iPho !=mcPhotons.end(); ++iPho ){
00222       h_MCPhoE_->Fill  ( (*iPho).fourMomentum().e() );
00223       h_MCPhoEta_->Fill  ( (*iPho).fourMomentum().pseudoRapidity() );
00224       h_MCPhoPhi_->Fill  ( (*iPho).fourMomentum().phi() );
00225       if (  (*iPho).isAConversion() ) {
00226 
00227         converted++;
00228 
00229         h_MCConvPhoE_->Fill  ( (*iPho).fourMomentum().e() );
00230         h_MCConvPhoEta_->Fill  ( (*iPho).fourMomentum().pseudoRapidity() );
00231         h_MCConvPhoPhi_->Fill  ( (*iPho).fourMomentum().phi() );
00232         h_MCConvPhoR_->Fill  ( (*iPho).vertex().perp() );
00233 
00234         std::vector<ElectronMCTruth> mcElectrons=(*iPho).electrons();
00235         std::cout << " MCPizeroAnalyzer mcElectrons size " << mcElectrons.size() << std::endl;
00236 
00237         for ( std::vector<ElectronMCTruth>::const_iterator iEl=mcElectrons.begin(); iEl !=mcElectrons.end(); ++iEl ){
00238 
00239           if ( (*iEl).fourMomentum().e()  < 30 ) continue;
00240           h_MCEleE_->Fill  ( (*iEl).fourMomentum().e() );
00241           h_MCEleEta_->Fill  ( (*iEl).fourMomentum().pseudoRapidity() );
00242           h_MCElePhi_->Fill  ( (*iEl).fourMomentum().phi() );
00243           
00244 
00245           h_EleEvsPhoE_->Fill ( (*iPho).fourMomentum().e(), (*iEl).fourMomentum().e() ); 
00246           
00247           float totBrem=0;
00248           for ( int iBrem=0; iBrem < (*iEl).bremVertices().size(); ++iBrem ) 
00249             totBrem +=  (*iEl).bremMomentum()[iBrem].e();
00250                   
00251           h_BremFrac_->Fill( totBrem/(*iEl).fourMomentum().e() );
00252           h_BremEnergy_->Fill (  totBrem  );
00253         }
00254 
00255       }
00256 
00257     }
00258 
00259 
00260       if ( converted > 0 ) {
00261         h_MCPiz1ConEta_->Fill  ( (*iPiz).fourMomentum().pseudoRapidity() );  
00262         if ( converted==2) h_MCPiz2ConEta_->Fill  ( (*iPiz).fourMomentum().pseudoRapidity() );  
00263       } else { 
00264         h_MCPizUnEta_->Fill  ( (*iPiz).fourMomentum().pseudoRapidity() );  
00265       }      
00266 
00267 
00268 
00269   }
00270 
00271 
00272   
00273 
00274 }

void MCPizeroAnalyzer::beginJob ( const edm::EventSetup setup  )  [virtual]

Reimplemented from edm::EDAnalyzer.

Definition at line 63 of file MCPizeroAnalyzer.cc.

References fOutputFile_, fOutputFileName_, h_BremEnergy_, h_BremFrac_, h_EleEvsPhoE_, h_MCConvPhoE_, h_MCConvPhoEta_, h_MCConvPhoPhi_, h_MCConvPhoR_, h_MCEleE_, h_MCEleEta_, h_MCElePhi_, h_MCPhoE_, h_MCPhoEta_, h_MCPhoPhi_, h_MCPiz1ConEta_, h_MCPiz2ConEta_, h_MCPizE_, h_MCPizEta_, h_MCPizMass1_, h_MCPizMass2_, h_MCPizPhi_, h_MCPizUnEta_, nEvt_, and thePizeroMCTruthFinder_.

00064 {
00065 
00066 
00067   nEvt_=0;
00068   
00069   thePizeroMCTruthFinder_ = new PizeroMCTruthFinder();
00070 
00071   fOutputFile_   = new TFile( fOutputFileName_.c_str(), "RECREATE" ) ;
00072 
00074   h_MCPizE_ = new TH1F("MCPizE","MC piz energy",100,0.,200.);
00075   h_MCPizPhi_ = new TH1F("MCPizPhi","MC piz phi",40,-3.14, 3.14);
00076   h_MCPizEta_ = new TH1F("MCPizEta","MC piz eta",40,-3., 3.);
00077   h_MCPizUnEta_ = new TH1F("MCPizUnEta","MC un piz eta",40,-3., 3.);
00078   h_MCPiz1ConEta_ = new TH1F("MCPiz1ConEta","MC con piz eta: at least one converted photon",40,-3., 3.);
00079   h_MCPiz2ConEta_ = new TH1F("MCPiz2ConEta","MC con piz eta: two converted photons",40,-3., 3.);
00080   h_MCPizMass1_= new TH1F("MCPizMass1","Piz mass unconverted ",100, 0., 200); 
00081   h_MCPizMass2_= new TH1F("MCPizMass2","Piz mass converted ",100, 0., 200); 
00082 
00083   // All Photons from Pizeros
00084   h_MCPhoE_ = new TH1F("MCPhoE","MC photon energy",100,0.,200.);
00085   h_MCPhoPhi_ = new TH1F("MCPhoPhi","MC photon phi",40,-3.14, 3.14);
00086   h_MCPhoEta_ = new TH1F("MCPhoEta","MC photon eta",40,-3., 3.);
00087  
00088  // Converted photons
00089   h_MCConvPhoE_ = new TH1F("MCConvPhoE","MC converted photon energy",100,0.,200.);
00090   h_MCConvPhoPhi_ = new TH1F("MCConvPhoPhi","MC converted photon phi",40,-3.14, 3.14);
00091   h_MCConvPhoEta_ = new TH1F("MCConvPhoEta","MC converted photon eta",40,-3., 3.);
00092   h_MCConvPhoR_ = new TH1F("MCConvPhoR","MC converted photon R",120,0.,120.);
00093   // Electrons from converted photons
00094   h_MCEleE_ = new TH1F("MCEleE","MC ele energy",100,0.,200.);
00095   h_MCElePhi_ = new TH1F("MCElePhi","MC ele phi",40,-3.14, 3.14);
00096   h_MCEleEta_ = new TH1F("MCEleEta","MC ele eta",40,-3., 3.);
00097   h_BremFrac_ = new TH1F("bremFrac","brem frac ", 50, 0., 1.);
00098   h_BremEnergy_ = new TH1F("bremE","Brem energy",100,0.,200.);
00099 
00100 
00101   h_EleEvsPhoE_ = new TH2F ("eleEvsPhoE","eleEvsPhoE",100,0.,200.,100,0.,200.);  
00102   
00103   
00104   return ;
00105 }

void MCPizeroAnalyzer::endJob ( void   )  [virtual]

Reimplemented from edm::EDAnalyzer.

Definition at line 279 of file MCPizeroAnalyzer.cc.

References GenMuonPlsPt100GeV_cfg::cout, fOutputFile_, and nEvt_.

00280 {
00281 
00282 
00283 
00284        
00285    fOutputFile_->Write() ;
00286    fOutputFile_->Close() ;
00287   
00288    edm::LogInfo("MCPizeroAnalyzer") << "Analyzed " << nEvt_  << "\n";
00289    std::cout  << "MCPizeroAnalyzer::endJob Analyzed " << nEvt_ << " events " << "\n";
00290 
00291    return ;
00292 }

float MCPizeroAnalyzer::etaTransformation ( float  a,
float  b 
) [private]

Definition at line 108 of file MCPizeroAnalyzer.cc.

References ETA, etaBarrelEndcap, funct::log(), PI, R_ECAL, funct::tan(), TWOPI, and Z_Endcap.

00108                                                                               {
00109 
00110 //---Definitions
00111         const float PI    = 3.1415927;
00112         const float TWOPI = 2.0*PI;
00113 
00114 //---Definitions for ECAL
00115         const float R_ECAL           = 136.5;
00116         const float Z_Endcap         = 328.0;
00117         const float etaBarrelEndcap  = 1.479; 
00118    
00119 //---ETA correction
00120 
00121         float Theta = 0.0  ; 
00122         float ZEcal = R_ECAL*sinh(EtaParticle)+Zvertex;
00123 
00124         if(ZEcal != 0.0) Theta = atan(R_ECAL/ZEcal);
00125         if(Theta<0.0) Theta = Theta+PI ;
00126         float ETA = - log(tan(0.5*Theta));
00127          
00128         if( fabs(ETA) > etaBarrelEndcap )
00129           {
00130            float Zend = Z_Endcap ;
00131            if(EtaParticle<0.0 )  Zend = -Zend ;
00132            float Zlen = Zend - Zvertex ;
00133            float RR = Zlen/sinh(EtaParticle); 
00134            Theta = atan(RR/Zend);
00135            if(Theta<0.0) Theta = Theta+PI ;
00136            ETA = - log(tan(0.5*Theta));               
00137           } 
00138 //---Return the result
00139         return ETA;
00140 //---end
00141 }

float MCPizeroAnalyzer::phiNormalization ( float &  a  )  [private]

Definition at line 143 of file MCPizeroAnalyzer.cc.

References PI, and TWOPI.

00144 {
00145 //---Definitions
00146  const float PI    = 3.1415927;
00147  const float TWOPI = 2.0*PI;
00148 
00149 
00150  if(phi >  PI) {phi = phi - TWOPI;}
00151  if(phi < -PI) {phi = phi + TWOPI;}
00152 
00153  //  cout << " Float_t PHInormalization out " << PHI << endl;
00154  return phi;
00155 
00156 }


Member Data Documentation

TFile* MCPizeroAnalyzer::fOutputFile_ [private]

Definition at line 50 of file MCPizeroAnalyzer.h.

Referenced by beginJob(), and endJob().

std::string MCPizeroAnalyzer::fOutputFileName_ [private]

Definition at line 49 of file MCPizeroAnalyzer.h.

Referenced by beginJob().

TH1F* MCPizeroAnalyzer::h_BremEnergy_ [private]

Definition at line 81 of file MCPizeroAnalyzer.h.

Referenced by analyze(), and beginJob().

TH1F* MCPizeroAnalyzer::h_BremFrac_ [private]

Definition at line 80 of file MCPizeroAnalyzer.h.

Referenced by analyze(), and beginJob().

TH2F* MCPizeroAnalyzer::h_EleEvsPhoE_ [private]

Definition at line 83 of file MCPizeroAnalyzer.h.

Referenced by analyze(), and beginJob().

TH1F* MCPizeroAnalyzer::h_MCConvPhoE_ [private]

Definition at line 88 of file MCPizeroAnalyzer.h.

Referenced by analyze(), and beginJob().

TH1F* MCPizeroAnalyzer::h_MCConvPhoEta_ [private]

Definition at line 89 of file MCPizeroAnalyzer.h.

Referenced by analyze(), and beginJob().

TH1F* MCPizeroAnalyzer::h_MCConvPhoPhi_ [private]

Definition at line 90 of file MCPizeroAnalyzer.h.

Referenced by analyze(), and beginJob().

TH1F* MCPizeroAnalyzer::h_MCConvPhoR_ [private]

Definition at line 91 of file MCPizeroAnalyzer.h.

Referenced by analyze(), and beginJob().

TH1F* MCPizeroAnalyzer::h_MCEleE_ [private]

Definition at line 77 of file MCPizeroAnalyzer.h.

Referenced by analyze(), and beginJob().

TH1F* MCPizeroAnalyzer::h_MCEleEta_ [private]

Definition at line 78 of file MCPizeroAnalyzer.h.

Referenced by analyze(), and beginJob().

TH1F* MCPizeroAnalyzer::h_MCElePhi_ [private]

Definition at line 79 of file MCPizeroAnalyzer.h.

Referenced by analyze(), and beginJob().

TH1F* MCPizeroAnalyzer::h_MCPhoE_ [private]

Definition at line 85 of file MCPizeroAnalyzer.h.

Referenced by analyze(), and beginJob().

TH1F* MCPizeroAnalyzer::h_MCPhoEta_ [private]

Definition at line 86 of file MCPizeroAnalyzer.h.

Referenced by analyze(), and beginJob().

TH1F* MCPizeroAnalyzer::h_MCPhoPhi_ [private]

Definition at line 87 of file MCPizeroAnalyzer.h.

Referenced by analyze(), and beginJob().

TH1F* MCPizeroAnalyzer::h_MCPiz1ConEta_ [private]

Definition at line 71 of file MCPizeroAnalyzer.h.

Referenced by analyze(), and beginJob().

TH1F* MCPizeroAnalyzer::h_MCPiz2ConEta_ [private]

Definition at line 72 of file MCPizeroAnalyzer.h.

Referenced by analyze(), and beginJob().

TH1F* MCPizeroAnalyzer::h_MCPizE_ [private]

Definition at line 68 of file MCPizeroAnalyzer.h.

Referenced by analyze(), and beginJob().

TH1F* MCPizeroAnalyzer::h_MCPizEta_ [private]

Definition at line 69 of file MCPizeroAnalyzer.h.

Referenced by analyze(), and beginJob().

TH1F* MCPizeroAnalyzer::h_MCPizMass1_ [private]

Definition at line 74 of file MCPizeroAnalyzer.h.

Referenced by analyze(), and beginJob().

TH1F* MCPizeroAnalyzer::h_MCPizMass2_ [private]

Definition at line 75 of file MCPizeroAnalyzer.h.

Referenced by beginJob().

TH1F* MCPizeroAnalyzer::h_MCPizPhi_ [private]

Definition at line 73 of file MCPizeroAnalyzer.h.

Referenced by analyze(), and beginJob().

TH1F* MCPizeroAnalyzer::h_MCPizUnEta_ [private]

Definition at line 70 of file MCPizeroAnalyzer.h.

Referenced by analyze(), and beginJob().

std::string MCPizeroAnalyzer::HepMCLabel [private]

Definition at line 62 of file MCPizeroAnalyzer.h.

double MCPizeroAnalyzer::mcEta_ [private]

Definition at line 60 of file MCPizeroAnalyzer.h.

double MCPizeroAnalyzer::mcPhi_ [private]

global variable for the MC photon

Definition at line 59 of file MCPizeroAnalyzer.h.

int MCPizeroAnalyzer::nEvt_ [private]

Definition at line 55 of file MCPizeroAnalyzer.h.

Referenced by analyze(), beginJob(), and endJob().

int MCPizeroAnalyzer::nMatched_ [private]

Definition at line 56 of file MCPizeroAnalyzer.h.

std::string MCPizeroAnalyzer::SimHitLabel [private]

Definition at line 65 of file MCPizeroAnalyzer.h.

std::string MCPizeroAnalyzer::SimTkLabel [private]

Definition at line 63 of file MCPizeroAnalyzer.h.

std::string MCPizeroAnalyzer::SimVtxLabel [private]

Definition at line 64 of file MCPizeroAnalyzer.h.

PizeroMCTruthFinder* MCPizeroAnalyzer::thePizeroMCTruthFinder_ [private]

Definition at line 45 of file MCPizeroAnalyzer.h.

Referenced by analyze(), beginJob(), and ~MCPizeroAnalyzer().


The documentation for this class was generated from the following files:
Generated on Tue Jun 9 18:28:09 2009 for CMSSW by  doxygen 1.5.4