CMS 3D CMS Logo

List of all members | Public Member Functions | Private Member Functions | Private Attributes
MCPhotonAnalyzer Class Reference

#include <MCPhotonAnalyzer.h>

Inheritance diagram for MCPhotonAnalyzer:
edm::EDAnalyzer edm::EDConsumerBase

Public Member Functions

void analyze (const edm::Event &, const edm::EventSetup &) override
 
void beginJob () override
 
void endJob () override
 
 MCPhotonAnalyzer (const edm::ParameterSet &)
 
 ~MCPhotonAnalyzer () override
 
- Public Member Functions inherited from edm::EDAnalyzer
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
 EDAnalyzer ()
 
SerialTaskQueueglobalLuminosityBlocksQueue ()
 
SerialTaskQueueglobalRunsQueue ()
 
ModuleDescription const & moduleDescription () const
 
std::string workerType () const
 
 ~EDAnalyzer () override
 
- Public Member Functions inherited from edm::EDConsumerBase
std::vector< ConsumesInfoconsumesInfo () const
 
void convertCurrentProcessAlias (std::string const &processName)
 Convert "@currentProcess" in InputTag process names to the actual current process name. More...
 
 EDConsumerBase ()
 
 EDConsumerBase (EDConsumerBase const &)=delete
 
 EDConsumerBase (EDConsumerBase &&)=default
 
ProductResolverIndexAndSkipBit indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
void itemsToGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
std::vector< ProductResolverIndexAndSkipBit > const & itemsToGetFrom (BranchType iType) const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void modulesWhoseProductsAreConsumed (std::vector< ModuleDescription const * > &modules, ProductRegistry const &preg, std::map< std::string, ModuleDescription const * > const &labelsToDesc, std::string const &processName) const
 
EDConsumerBase const & operator= (EDConsumerBase const &)=delete
 
EDConsumerBaseoperator= (EDConsumerBase &&)=default
 
bool registeredToConsume (ProductResolverIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
ProductResolverIndexAndSkipBit uncheckedIndexFrom (EDGetToken) const
 
void updateLookup (BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet)
 
virtual ~EDConsumerBase () noexcept(false)
 

Private Member Functions

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

Private Attributes

TFile * fOutputFile_
 
std::string fOutputFileName_
 
TH1F * h_BremEnergy_
 
TH2F * h_bremEvsEleE_
 
TH1F * h_BremFrac_
 
TH2F * h_bremFracVsConvR_
 
TH1F * h_convFracEta1_
 
TH1F * h_convFracEta2_
 
TH1F * h_convFracEta3_
 
TH1F * h_convFracEta4_
 
TH2F * h_EleEvsPhoE_
 
TH1F * h_MCConvPhoE_
 
TH1F * h_MCConvPhoEta_
 
TH1F * h_MCConvPhoOneTrackE_
 Conversions with one track. More...
 
TH1F * h_MCConvPhoOneTrackEta_
 
TH1F * h_MCConvPhoOneTrackPhi_
 
TH1F * h_MCConvPhoOneTrackR_
 
TH1F * h_MCConvPhoPhi_
 
TH1F * h_MCConvPhoR_
 
TH1F * h_MCConvPhoREta1_
 
TH1F * h_MCConvPhoREta2_
 
TH1F * h_MCConvPhoREta3_
 
TH1F * h_MCConvPhoREta4_
 
TH1F * h_MCConvPhoTwoTracksE_
 Conversions with two tracks. More...
 
TH1F * h_MCConvPhoTwoTracksEta_
 
TH1F * h_MCConvPhoTwoTracksPhi_
 
TH1F * h_MCConvPhoTwoTracksR_
 
TH1F * h_MCEleE_
 
TH1F * h_MCEleEta_
 
TH1F * h_MCElePhi_
 
TH1F * h_MCPhoE_
 
TH1F * h_MCPhoEta1_
 
TH1F * h_MCPhoEta2_
 
TH1F * h_MCPhoEta3_
 
TH1F * h_MCPhoEta4_
 
TH1F * h_MCPhoEta_
 
TH1F * h_MCPhoPhi_
 
std::string HepMCLabel
 
double mcEta_
 
double mcPhi_
 global variable for the MC photon More...
 
int nEvt_
 
int nMatched_
 
TProfile * p_BremVsConvEta_
 
TProfile * p_BremVsConvR_
 
TProfile * p_BremVsEta_
 
TProfile * p_BremVsR_
 
std::string SimHitLabel
 
std::string SimTkLabel
 
std::string SimVtxLabel
 
PhotonMCTruthFinderthePhotonMCTruthFinder_
 
const TrackerGeometrytrackerGeom
 

Additional Inherited Members

- Public Types inherited from edm::EDAnalyzer
typedef EDAnalyzer ModuleType
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 
- Static Public Member Functions inherited from edm::EDAnalyzer
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &)
 
static bool wantsGlobalLuminosityBlocks ()
 
static bool wantsGlobalRuns ()
 
static bool wantsStreamLuminosityBlocks ()
 
static bool wantsStreamRuns ()
 
- Protected Member Functions inherited from edm::EDConsumerBase
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
EDGetToken consumes (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken consumes (TypeToGet const &id, edm::InputTag const &tag)
 
ConsumesCollector consumesCollector ()
 Use a ConsumesCollector to gather consumes information from helper functions. More...
 
template<typename ProductType , BranchType B = InEvent>
void consumesMany ()
 
void consumesMany (const TypeToGet &id)
 
template<BranchType B>
void consumesMany (const TypeToGet &id)
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > mayConsume (edm::InputTag const &tag)
 
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 

Detailed Description

Definition at line 22 of file MCPhotonAnalyzer.h.

Constructor & Destructor Documentation

MCPhotonAnalyzer::MCPhotonAnalyzer ( const edm::ParameterSet pset)
explicit

Definition at line 48 of file MCPhotonAnalyzer.cc.

48 {}
MCPhotonAnalyzer::~MCPhotonAnalyzer ( )
override

Definition at line 52 of file MCPhotonAnalyzer.cc.

52  {
53 
54 
56 
57 }
PhotonMCTruthFinder * thePhotonMCTruthFinder_

Member Function Documentation

void MCPhotonAnalyzer::analyze ( const edm::Event e,
const edm::EventSetup  
)
override

Loop over all MC photons in the event

Definition at line 180 of file MCPhotonAnalyzer.cc.

References gather_cfg::cout, edm::Event::getByLabel(), edm::EventBase::id(), cmsBatch::log, and funct::tan().

181 {
182 
183 
184  using namespace edm;
185  //UNUSED const float etaPhiDistance=0.01;
186  // Fiducial region
187  //UNUSED const float TRK_BARL =0.9;
188  //UNUSED const float BARL = 1.4442; // DAQ TDR p.290
189  //UNUSED const float END_LO = 1.566;
190  //UNUSED const float END_HI = 2.5;
191  // Electron mass
192  //UNUSED const Float_t mElec= 0.000511;
193 
194 
195  nEvt_++;
196  LogInfo("mcEleAnalyzer") << "MCPhotonAnalyzer Analyzing event number: " << e.id() << " Global Counter " << nEvt_ <<"\n";
197  // LogDebug("MCPhotonAnalyzer") << "MCPhotonAnalyzer Analyzing event number: " << e.id() << " Global Counter " << nEvt_ <<"\n";
198  std::cout << "MCPhotonAnalyzer Analyzing event number: " << e.id() << " Global Counter " << nEvt_ <<"\n";
199 
200 
201 
203  std::cout << " MCPhotonAnalyzer Looking for MC truth " << "\n";
204 
205  //get simtrack info
206  std::vector<SimTrack> theSimTracks;
207  std::vector<SimVertex> theSimVertices;
208 
211  e.getByLabel("g4SimHits",SimTk);
212  e.getByLabel("g4SimHits",SimVtx);
213 
214  theSimTracks.insert(theSimTracks.end(),SimTk->begin(),SimTk->end());
215  theSimVertices.insert(theSimVertices.end(),SimVtx->begin(),SimVtx->end());
216  std::cout << " MCPhotonAnalyzer This Event has " << theSimTracks.size() << " sim tracks " << std::endl;
217  std::cout << " MCPhotonAnalyzer This Event has " << theSimVertices.size() << " sim vertices " << std::endl;
218  if ( theSimTracks.empty() ) std::cout << " Event number " << e.id() << " has NO sim tracks " << std::endl;
219 
220 
221  std::vector<PhotonMCTruth> mcPhotons=thePhotonMCTruthFinder_->find (theSimTracks, theSimVertices);
222  std::cout << " MCPhotonAnalyzer mcPhotons size " << mcPhotons.size() << std::endl;
223 
224 
225 
226  for ( std::vector<PhotonMCTruth>::const_iterator iPho=mcPhotons.begin(); iPho !=mcPhotons.end(); ++iPho ){
227 
228  if ( (*iPho).fourMomentum().e() < 35 ) continue;
229 
230  h_MCPhoE_->Fill ( (*iPho).fourMomentum().e() );
231  // float correta = etaTransformation( (*iPho).fourMomentum().pseudoRapidity(), (*iPho).primaryVertex().z() );
232  float Theta= (*iPho).fourMomentum().theta();
233  float correta = - log(tan(0.5*Theta));
234  correta = etaTransformation( correta, (*iPho).primaryVertex().z() );
235  //h_MCPhoEta_->Fill ( (*iPho).fourMomentum().pseudoRapidity() );
236  h_MCPhoEta_->Fill ( fabs(correta)-0.001 );
237  h_MCPhoPhi_->Fill ( (*iPho).fourMomentum().phi() );
238 
239  /*
240  if ( fabs((*iPho).fourMomentum().pseudoRapidity() ) <= 0.25 && fabs((*iPho).fourMomentum().pseudoRapidity() ) >=0.15 )
241  h_MCPhoEta1_->Fill ( (*iPho).fourMomentum().pseudoRapidity() );
242  if ( fabs((*iPho).fourMomentum().pseudoRapidity() ) <= 0.95 && fabs((*iPho).fourMomentum().pseudoRapidity() ) >=0.85 )
243  h_MCPhoEta2_->Fill ( (*iPho).fourMomentum().pseudoRapidity() );
244  if ( fabs((*iPho).fourMomentum().pseudoRapidity() ) <= 1.65 && fabs((*iPho).fourMomentum().pseudoRapidity() ) >=1.55 )
245  h_MCPhoEta3_->Fill ( (*iPho).fourMomentum().pseudoRapidity() );
246  if ( fabs((*iPho).fourMomentum().pseudoRapidity() ) <= 2.05 && fabs((*iPho).fourMomentum().pseudoRapidity() ) >=1.95 )
247  h_MCPhoEta4_->Fill ( (*iPho).fourMomentum().pseudoRapidity() );
248  */
249 
250 
251  if ( fabs(correta ) <= 0.3 && fabs(correta ) >0.2 )
252  h_MCPhoEta1_->Fill ( correta );
253  if ( fabs(correta ) <= 1.00 && fabs( correta ) >0.9 )
254  h_MCPhoEta2_->Fill ( correta );
255  if ( fabs( correta ) <= 1.6 && fabs(correta ) >1.5 )
256  h_MCPhoEta3_->Fill ( correta );
257  if ( fabs(correta ) <= 2. && fabs(correta ) >1.9 )
258  h_MCPhoEta4_->Fill ( correta );
259 
260 
261 
262  // if ( (*iPho).isAConversion() && (*iPho).vertex().perp()< 10 ) {
263  if ( (*iPho).isAConversion() ) {
264 
265 
266 
267  h_MCConvPhoE_->Fill ( (*iPho).fourMomentum().e() );
268  // h_MCConvPhoEta_->Fill ( (*iPho).fourMomentum().pseudoRapidity() );
269 
270  h_MCConvPhoEta_->Fill ( fabs(correta)-0.001 );
271  h_MCConvPhoPhi_->Fill ( (*iPho).fourMomentum().phi() );
272  h_MCConvPhoR_->Fill ( (*iPho).vertex().perp() );
273 
274  /*
275  if ( fabs((*iPho).fourMomentum().pseudoRapidity() ) <= 0.25 && fabs((*iPho).fourMomentum().pseudoRapidity() ) >=0.15 )
276  h_MCConvPhoREta1_->Fill ( (*iPho).vertex().perp() );
277  if ( fabs((*iPho).fourMomentum().pseudoRapidity() ) <= 0.95 && fabs((*iPho).fourMomentum().pseudoRapidity() ) >=0.85 )
278  h_MCConvPhoREta2_->Fill ( (*iPho).vertex().perp() );
279  if ( fabs((*iPho).fourMomentum().pseudoRapidity() ) <= 1.65 && fabs((*iPho).fourMomentum().pseudoRapidity() ) >=1.55 )
280  h_MCConvPhoREta3_->Fill ( (*iPho).vertex().perp() );
281  if ( fabs((*iPho).fourMomentum().pseudoRapidity() ) <= 2.05 && fabs((*iPho).fourMomentum().pseudoRapidity() ) >=1.95 )
282  h_MCConvPhoREta4_->Fill ( (*iPho).vertex().perp() );
283  */
284 
285 
286  if ( fabs(correta ) <= 0.3 && fabs(correta ) >0.2 )
287  h_MCConvPhoREta1_->Fill ( (*iPho).vertex().perp() );
288  if ( fabs(correta ) <= 1. && fabs( correta ) >0.9 )
289  h_MCConvPhoREta2_->Fill ( (*iPho).vertex().perp() );
290  if ( fabs( correta ) <= 1.6 && fabs(correta ) >1.5 )
291  h_MCConvPhoREta3_->Fill ( (*iPho).vertex().perp() );
292  if ( fabs(correta ) <= 2 && fabs(correta ) >1.9 )
293  h_MCConvPhoREta4_->Fill ( (*iPho).vertex().perp() );
294 
295 
296 
297 
298 
299  } // end conversions
300 
301 
302 
303 
304 
305  }
306 
307 
308 
309 
310 }
float etaTransformation(float a, float b)
Tan< T >::type tan(const T &t)
Definition: Tan.h:22
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
Definition: Event.h:535
std::vector< PhotonMCTruth > find(const std::vector< SimTrack > &simTracks, const std::vector< SimVertex > &simVertices)
edm::EventID id() const
Definition: EventBase.h:60
HLT enums.
PhotonMCTruthFinder * thePhotonMCTruthFinder_
void MCPhotonAnalyzer::beginJob ( void  )
overridevirtual

conversions

conversions with two tracks

electrons from conversions

Reimplemented from edm::EDAnalyzer.

Definition at line 60 of file MCPhotonAnalyzer.cc.

References TFileService::make(), and mathSSE::return().

61 {
62 
63 
64  nEvt_=0;
65 
67 
69 
70 
72  h_MCPhoE_ = fs->make<TH1F>("MCPhoE","MC photon energy",100,0.,100.);
73  h_MCPhoPhi_ = fs->make<TH1F>("MCPhoPhi","MC photon phi",40,-3.14, 3.14);
74  h_MCPhoEta_ = fs->make<TH1F>("MCPhoEta","MC photon eta",25,0., 2.5);
75  h_MCPhoEta1_ = fs->make<TH1F>("MCPhoEta1","MC photon eta",40,-3., 3.);
76  h_MCPhoEta2_ = fs->make<TH1F>("MCPhoEta2","MC photon eta",40,-3., 3.);
77  h_MCPhoEta3_ = fs->make<TH1F>("MCPhoEta3","MC photon eta",40,-3., 3.);
78  h_MCPhoEta4_ = fs->make<TH1F>("MCPhoEta4","MC photon eta",40,-3., 3.);
80  h_MCConvPhoE_ = fs->make<TH1F>("MCConvPhoE","MC converted photon energy",100,0.,100.);
81  h_MCConvPhoPhi_ = fs->make<TH1F>("MCConvPhoPhi","MC converted photon phi",40,-3.14, 3.14);
82  h_MCConvPhoEta_ = fs->make<TH1F>("MCConvPhoEta","MC converted photon eta",25,0., 2.5);
83  h_MCConvPhoR_ = fs->make<TH1F>("MCConvPhoR","MC converted photon R",120,0.,120.);
84 
85  h_MCConvPhoREta1_ = fs->make<TH1F>("MCConvPhoREta1","MC converted photon R",120,0.,120.);
86  h_MCConvPhoREta2_ = fs->make<TH1F>("MCConvPhoREta2","MC converted photon R",120,0.,120.);
87  h_MCConvPhoREta3_ = fs->make<TH1F>("MCConvPhoREta3","MC converted photon R",120,0.,120.);
88  h_MCConvPhoREta4_ = fs->make<TH1F>("MCConvPhoREta4","MC converted photon R",120,0.,120.);
89 
90  h_convFracEta1_ = fs->make<TH1F>("convFracEta1","Integrated(R) fraction of conversion |eta|=0.2",120,0.,120.);
91  h_convFracEta2_ = fs->make<TH1F>("convFracEta2","Integrated(R) fraction of conversion |eta|=0.9",120,0.,120.);
92  h_convFracEta3_ = fs->make<TH1F>("convFracEta3","Integrated(R) fraction of conversion |eta|=1.5",120,0.,120.);
93  h_convFracEta4_ = fs->make<TH1F>("convFracEta4","Integrated(R) fraction of conversion |eta|=2.0",120,0.,120.);
95  h_MCConvPhoTwoTracksE_ = fs->make<TH1F>("MCConvPhoTwoTracksE","MC converted photon with 2 tracks energy",100,0.,100.);
96  h_MCConvPhoTwoTracksPhi_ = fs->make<TH1F>("MCConvPhoTwoTracksPhi","MC converted photon 2 tracks phi",40,-3.14, 3.14);
97  h_MCConvPhoTwoTracksEta_ = fs->make<TH1F>("MCConvPhoTwoTracksEta","MC converted photon 2 tracks eta",40,-3., 3.);
98  h_MCConvPhoTwoTracksR_ = fs->make<TH1F>("MCConvPhoTwoTracksR","MC converted photon 2 tracks eta",48,0.,120.);
99  // conversions with one track
100  h_MCConvPhoOneTrackE_ = fs->make<TH1F>("MCConvPhoOneTrackE","MC converted photon with 1 track energy",100,0.,100.);
101  h_MCConvPhoOneTrackPhi_ = fs->make<TH1F>("MCConvPhoOneTrackPhi","MC converted photon 1 track phi",40,-3.14, 3.14);
102  h_MCConvPhoOneTrackEta_ = fs->make<TH1F>("MCConvPhoOneTrackEta","MC converted photon 1 track eta",40,-3., 3.);
103  h_MCConvPhoOneTrackR_ = fs->make<TH1F>("MCConvPhoOneTrackR","MC converted photon 1 track eta",48,0.,120.);
104 
106  h_MCEleE_ = fs->make<TH1F>("MCEleE","MC ele energy",100,0.,200.);
107  h_MCElePhi_ = fs->make<TH1F>("MCElePhi","MC ele phi",40,-3.14, 3.14);
108  h_MCEleEta_ = fs->make<TH1F>("MCEleEta","MC ele eta",40,-3., 3.);
109  h_BremFrac_ = fs->make<TH1F>("bremFrac","brem frac ", 100, 0., 1.);
110  h_BremEnergy_ = fs->make<TH1F>("BremE","Brem energy",100,0.,200.);
111  h_EleEvsPhoE_ = fs->make<TH2F>("eleEvsPhoE","eleEvsPhoE",100,0.,200.,100,0.,200.);
112  h_bremEvsEleE_ = fs->make<TH2F>("bremEvsEleE","bremEvsEleE",100,0.,200.,100,0.,200.);
113 
114  p_BremVsR_ = fs->make<TProfile>("BremVsR", " Mean Brem Energy vs R ", 48, 0., 120.);
115  p_BremVsEta_ = fs->make<TProfile>("BremVsEta", " Mean Brem Energy vs Eta ", 50, -2.5, 2.5);
116 
117  p_BremVsConvR_ = fs->make<TProfile>("BremVsConvR", " Mean Brem Fraction vs conversion R ", 48, 0., 120.);
118  p_BremVsConvEta_ = fs->make<TProfile>("BremVsConvEta", " Mean Brem Fraction vs converion Eta ", 50, -2.5, 2.5);
119 
120  h_bremFracVsConvR_ = fs->make<TH2F>("bremFracVsConvR","brem Fraction vs conversion R",60,0.,120.,100,0.,1.);
121 
122  return ;
123 }
TH1F * h_MCConvPhoOneTrackE_
Conversions with one track.
TH1F * h_MCConvPhoTwoTracksPhi_
TProfile * p_BremVsEta_
TH1F * h_MCConvPhoOneTrackPhi_
T * make(const Args &...args) const
make new ROOT object
Definition: TFileService.h:64
TProfile * p_BremVsConvR_
return((rh^lh)&mask)
TH1F * h_MCConvPhoTwoTracksR_
TH1F * h_MCConvPhoTwoTracksE_
Conversions with two tracks.
TH1F * h_MCConvPhoOneTrackEta_
TProfile * p_BremVsConvEta_
TH1F * h_MCConvPhoTwoTracksEta_
PhotonMCTruthFinder * thePhotonMCTruthFinder_
void MCPhotonAnalyzer::endJob ( void  )
overridevirtual

Reimplemented from edm::EDAnalyzer.

Definition at line 315 of file MCPhotonAnalyzer.cc.

References gather_cfg::cout, SiPixelPhase1TrackClustersV_cfi::e3, vertexPlots::e4, mps_fire::i, createfilelist::int, mathSSE::return(), and indexGen::s2.

316 {
317 
318 
319  Double_t s1=0;
320  Double_t s2=0;
321  Double_t s3=0;
322  Double_t s4=0;
323  int e1=0;
324  int e2=0;
325  int e3=0;
326  int e4=0;
327 
328  Double_t nTotEta1 = h_MCPhoEta1_->GetEntries();
329  Double_t nTotEta2 = h_MCPhoEta2_->GetEntries();
330  Double_t nTotEta3 = h_MCPhoEta3_->GetEntries();
331  Double_t nTotEta4 = h_MCPhoEta4_->GetEntries();
332 
333  for ( int i=1; i<=120; ++i) {
334  e1 = (int)h_MCConvPhoREta1_->GetBinContent(i);
335  e2 = (int)h_MCConvPhoREta2_->GetBinContent(i);
336  e3 = (int)h_MCConvPhoREta3_->GetBinContent(i);
337  e4 = (int)h_MCConvPhoREta4_->GetBinContent(i);
338  s1+=e1;
339  s2+=e2;
340  s3+=e3;
341  s4+=e4;
342  h_convFracEta1_->SetBinContent(i,s1*100/nTotEta1);
343  h_convFracEta2_->SetBinContent(i,s2*100/nTotEta2);
344  h_convFracEta3_->SetBinContent(i,s3*100/nTotEta3);
345  h_convFracEta4_->SetBinContent(i,s4*100/nTotEta4);
346 
347 
348 
349 
350 
351 }
352 
353 
354 
355  edm::LogInfo("MCPhotonAnalyzer") << "Analyzed " << nEvt_ << "\n";
356  std::cout << "MCPhotonAnalyzer::endJob Analyzed " << nEvt_ << " events " << "\n";
357 
358  return ;
359 }
return((rh^lh)&mask)
float MCPhotonAnalyzer::etaTransformation ( float  a,
float  b 
)
private

Definition at line 126 of file MCPhotonAnalyzer.cc.

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

126  {
127 
128 //---Definitions
129  const float PI = 3.1415927;
130 // const float TWOPI = 2.0*PI;
131 
132 //---Definitions for ECAL
133  const float R_ECAL = 136.5;
134  const float Z_Endcap = 328.0;
135  const float etaBarrelEndcap = 1.479;
136 
137 //---ETA correction
138 
139  float Theta = 0.0 ;
140  float ZEcal = R_ECAL*sinh(EtaParticle)+Zvertex;
141 
142  if(ZEcal != 0.0) Theta = atan(R_ECAL/ZEcal);
143  if(Theta<0.0) Theta = Theta+PI ;
144  float ETA = - log(tan(0.5*Theta));
145 
146  if( fabs(ETA) > etaBarrelEndcap )
147  {
148  float Zend = Z_Endcap ;
149  if(EtaParticle<0.0 ) Zend = -Zend ;
150  float Zlen = Zend - Zvertex ;
151  float RR = Zlen/sinh(EtaParticle);
152  Theta = atan(RR/Zend);
153  if(Theta<0.0) Theta = Theta+PI ;
154  ETA = - log(tan(0.5*Theta));
155  }
156 //---Return the result
157  return ETA;
158 //---end
159 }
#define ETA
Tan< T >::type tan(const T &t)
Definition: Tan.h:22
#define PI
Definition: QcdUeDQM.h:36
static const float etaBarrelEndcap
static const float Z_Endcap
static const float R_ECAL
float MCPhotonAnalyzer::phiNormalization ( float &  a)
private

Definition at line 161 of file MCPhotonAnalyzer.cc.

References PI, and TWOPI.

162 {
163 //---Definitions
164  const float PI = 3.1415927;
165  const float TWOPI = 2.0*PI;
166 
167 
168  if(phi > PI) {phi = phi - TWOPI;}
169  if(phi < -PI) {phi = phi + TWOPI;}
170 
171  // cout << " Float_t PHInormalization out " << PHI << endl;
172  return phi;
173 
174 }
#define TWOPI
Definition: DQMSourcePi0.cc:37
#define PI
Definition: QcdUeDQM.h:36

Member Data Documentation

TFile* MCPhotonAnalyzer::fOutputFile_
private

Definition at line 49 of file MCPhotonAnalyzer.h.

std::string MCPhotonAnalyzer::fOutputFileName_
private

Definition at line 48 of file MCPhotonAnalyzer.h.

TH1F* MCPhotonAnalyzer::h_BremEnergy_
private

Definition at line 106 of file MCPhotonAnalyzer.h.

TH2F* MCPhotonAnalyzer::h_bremEvsEleE_
private

Definition at line 108 of file MCPhotonAnalyzer.h.

TH1F* MCPhotonAnalyzer::h_BremFrac_
private

Definition at line 105 of file MCPhotonAnalyzer.h.

TH2F* MCPhotonAnalyzer::h_bremFracVsConvR_
private

Definition at line 116 of file MCPhotonAnalyzer.h.

TH1F* MCPhotonAnalyzer::h_convFracEta1_
private

Definition at line 85 of file MCPhotonAnalyzer.h.

TH1F* MCPhotonAnalyzer::h_convFracEta2_
private

Definition at line 86 of file MCPhotonAnalyzer.h.

TH1F* MCPhotonAnalyzer::h_convFracEta3_
private

Definition at line 87 of file MCPhotonAnalyzer.h.

TH1F* MCPhotonAnalyzer::h_convFracEta4_
private

Definition at line 88 of file MCPhotonAnalyzer.h.

TH2F* MCPhotonAnalyzer::h_EleEvsPhoE_
private

Definition at line 107 of file MCPhotonAnalyzer.h.

TH1F* MCPhotonAnalyzer::h_MCConvPhoE_
private

Definition at line 77 of file MCPhotonAnalyzer.h.

TH1F* MCPhotonAnalyzer::h_MCConvPhoEta_
private

Definition at line 78 of file MCPhotonAnalyzer.h.

TH1F* MCPhotonAnalyzer::h_MCConvPhoOneTrackE_
private

Conversions with one track.

Definition at line 97 of file MCPhotonAnalyzer.h.

TH1F* MCPhotonAnalyzer::h_MCConvPhoOneTrackEta_
private

Definition at line 98 of file MCPhotonAnalyzer.h.

TH1F* MCPhotonAnalyzer::h_MCConvPhoOneTrackPhi_
private

Definition at line 99 of file MCPhotonAnalyzer.h.

TH1F* MCPhotonAnalyzer::h_MCConvPhoOneTrackR_
private

Definition at line 100 of file MCPhotonAnalyzer.h.

TH1F* MCPhotonAnalyzer::h_MCConvPhoPhi_
private

Definition at line 79 of file MCPhotonAnalyzer.h.

TH1F* MCPhotonAnalyzer::h_MCConvPhoR_
private

Definition at line 80 of file MCPhotonAnalyzer.h.

TH1F* MCPhotonAnalyzer::h_MCConvPhoREta1_
private

Definition at line 81 of file MCPhotonAnalyzer.h.

TH1F* MCPhotonAnalyzer::h_MCConvPhoREta2_
private

Definition at line 82 of file MCPhotonAnalyzer.h.

TH1F* MCPhotonAnalyzer::h_MCConvPhoREta3_
private

Definition at line 83 of file MCPhotonAnalyzer.h.

TH1F* MCPhotonAnalyzer::h_MCConvPhoREta4_
private

Definition at line 84 of file MCPhotonAnalyzer.h.

TH1F* MCPhotonAnalyzer::h_MCConvPhoTwoTracksE_
private

Conversions with two tracks.

Definition at line 92 of file MCPhotonAnalyzer.h.

TH1F* MCPhotonAnalyzer::h_MCConvPhoTwoTracksEta_
private

Definition at line 93 of file MCPhotonAnalyzer.h.

TH1F* MCPhotonAnalyzer::h_MCConvPhoTwoTracksPhi_
private

Definition at line 94 of file MCPhotonAnalyzer.h.

TH1F* MCPhotonAnalyzer::h_MCConvPhoTwoTracksR_
private

Definition at line 95 of file MCPhotonAnalyzer.h.

TH1F* MCPhotonAnalyzer::h_MCEleE_
private

Definition at line 102 of file MCPhotonAnalyzer.h.

TH1F* MCPhotonAnalyzer::h_MCEleEta_
private

Definition at line 103 of file MCPhotonAnalyzer.h.

TH1F* MCPhotonAnalyzer::h_MCElePhi_
private

Definition at line 104 of file MCPhotonAnalyzer.h.

TH1F* MCPhotonAnalyzer::h_MCPhoE_
private

Definition at line 69 of file MCPhotonAnalyzer.h.

TH1F* MCPhotonAnalyzer::h_MCPhoEta1_
private

Definition at line 71 of file MCPhotonAnalyzer.h.

TH1F* MCPhotonAnalyzer::h_MCPhoEta2_
private

Definition at line 72 of file MCPhotonAnalyzer.h.

TH1F* MCPhotonAnalyzer::h_MCPhoEta3_
private

Definition at line 73 of file MCPhotonAnalyzer.h.

TH1F* MCPhotonAnalyzer::h_MCPhoEta4_
private

Definition at line 74 of file MCPhotonAnalyzer.h.

TH1F* MCPhotonAnalyzer::h_MCPhoEta_
private

Definition at line 70 of file MCPhotonAnalyzer.h.

TH1F* MCPhotonAnalyzer::h_MCPhoPhi_
private

Definition at line 75 of file MCPhotonAnalyzer.h.

std::string MCPhotonAnalyzer::HepMCLabel
private

Definition at line 62 of file MCPhotonAnalyzer.h.

double MCPhotonAnalyzer::mcEta_
private

Definition at line 60 of file MCPhotonAnalyzer.h.

double MCPhotonAnalyzer::mcPhi_
private

global variable for the MC photon

Definition at line 59 of file MCPhotonAnalyzer.h.

int MCPhotonAnalyzer::nEvt_
private

Definition at line 54 of file MCPhotonAnalyzer.h.

int MCPhotonAnalyzer::nMatched_
private

Definition at line 55 of file MCPhotonAnalyzer.h.

TProfile* MCPhotonAnalyzer::p_BremVsConvEta_
private

Definition at line 114 of file MCPhotonAnalyzer.h.

TProfile* MCPhotonAnalyzer::p_BremVsConvR_
private

Definition at line 113 of file MCPhotonAnalyzer.h.

TProfile* MCPhotonAnalyzer::p_BremVsEta_
private

Definition at line 111 of file MCPhotonAnalyzer.h.

TProfile* MCPhotonAnalyzer::p_BremVsR_
private

Definition at line 110 of file MCPhotonAnalyzer.h.

std::string MCPhotonAnalyzer::SimHitLabel
private

Definition at line 65 of file MCPhotonAnalyzer.h.

std::string MCPhotonAnalyzer::SimTkLabel
private

Definition at line 63 of file MCPhotonAnalyzer.h.

std::string MCPhotonAnalyzer::SimVtxLabel
private

Definition at line 64 of file MCPhotonAnalyzer.h.

PhotonMCTruthFinder* MCPhotonAnalyzer::thePhotonMCTruthFinder_
private

Definition at line 44 of file MCPhotonAnalyzer.h.

const TrackerGeometry* MCPhotonAnalyzer::trackerGeom
private

Definition at line 46 of file MCPhotonAnalyzer.h.