CMS 3D CMS Logo

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

#include <AnalysisRootpleProducer.h>

Inheritance diagram for AnalysisRootpleProducer:
edm::EDAnalyzer edm::EDConsumerBase

Public Member Functions

 AnalysisRootpleProducer (const edm::ParameterSet &)
 
void analyze (const edm::Event &, const edm::EventSetup &) override
 
void beginJob () override
 
void endJob () override
 
void fillCaloJet (float, float, float, float)
 
void fillChargedJet (float, float, float, float)
 
void fillEventInfo (int)
 
void fillInclusiveJet (float, float, float, float)
 
void fillMCParticles (float, float, float, float)
 
void fillTracks (float, float, float, float)
 
void fillTracksJet (float, float, float, float)
 
void store ()
 
 ~AnalysisRootpleProducer () override
 
- Public Member Functions inherited from edm::EDAnalyzer
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
 EDAnalyzer ()
 
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
 
void updateLookup (BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet)
 
virtual ~EDConsumerBase () noexcept(false)
 

Private Attributes

TClonesArray * acceptedTriggers
 
TTree * AnalysisTree
 
TClonesArray * CalorimeterJet
 
edm::Handle< std::vector< reco::GenParticle > > CandHandleMC
 
edm::Handle< reco::CandidateCollectionCandHandleRECO
 
TClonesArray * ChargedJet
 
edm::Handle< reco::GenJetCollectionChgGenJetsHandle
 
edm::EDGetTokenT< std::vector< reco::GenParticle > > chgGenPartCollToken
 
edm::EDGetTokenT< reco::GenJetCollectionchgJetCollToken
 
float EtaCJ [NCJMAX]
 
float EtaEHJ [NEHJMAX]
 
float EtaIJ [NIJMAX]
 
float EtaMC [NMCPMAX]
 
float EtaTJ [NTJMAX]
 
float EtaTK [NTKMAX]
 
int EventKind
 
edm::Handle< edm::HepMCProductEvtHandle
 
edm::Service< TFileServicefs
 
edm::EDGetTokenT< reco::GenJetCollectiongenJetCollToken
 
edm::Handle< reco::GenJetCollectionGenJetsHandle
 
TClonesArray * InclusiveJet
 
edm::EDGetTokenT< edm::HepMCProductmcEventToken
 
float MomentumCJ [NCJMAX]
 
float MomentumEHJ [NEHJMAX]
 
float MomentumIJ [NIJMAX]
 
float MomentumMC [NMCPMAX]
 
float MomentumTJ [NTJMAX]
 
float MomentumTK [NTKMAX]
 
TClonesArray * MonteCarlo
 
int NumberCaloJet
 
int NumberChargedJet
 
int NumberInclusiveJet
 
int NumberMCParticles
 
int NumberTracks
 
int NumberTracksJet
 
bool onlyRECO
 
float PhiCJ [NCJMAX]
 
float PhiEHJ [NEHJMAX]
 
float PhiIJ [NIJMAX]
 
float PhiMC [NMCPMAX]
 
float PhiTJ [NTJMAX]
 
float PhiTK [NTKMAX]
 
float piG
 
edm::EDGetTokenT< reco::CaloJetCollectionrecoCaloJetCollToken
 
edm::Handle< reco::CaloJetCollectionRecoCaloJetsHandle
 
TClonesArray * Track
 
edm::EDGetTokenT< reco::CandidateCollectiontracksCollToken
 
TClonesArray * TracksJet
 
edm::EDGetTokenT< reco::BasicJetCollectiontracksJetCollToken
 
edm::Handle< reco::BasicJetCollectionTracksJetsHandle
 
float TransverseMomentumCJ [NCJMAX]
 
float TransverseMomentumEHJ [NEHJMAX]
 
float TransverseMomentumIJ [NIJMAX]
 
float TransverseMomentumMC [NMCPMAX]
 
float TransverseMomentumTJ [NTJMAX]
 
float TransverseMomentumTK [NTKMAX]
 
edm::Handle< edm::TriggerResultstriggerResults
 
edm::EDGetTokenT< edm::TriggerResultstriggerResultsToken
 

Static Private Attributes

static const int NCJMAX = 10000
 
static const int NEHJMAX = 10000
 
static const int NIJMAX = 10000
 
static const int NMCPMAX = 10000
 
static const int NTJMAX = 10000
 
static const int NTKMAX = 10000
 

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 &)
 
- 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 40 of file AnalysisRootpleProducer.h.

Constructor & Destructor Documentation

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

Definition at line 102 of file AnalysisRootpleProducer.cc.

References edm::ParameterSet::getParameter(), edm::ParameterSet::getUntrackedParameter(), and AlCaHLTBitMon_QueryRunRegistry::string.

103 {
104  // flag to ignore gen-level analysis
105  onlyRECO = pset.getUntrackedParameter<bool>("OnlyRECO",false);
106 
107  // particle, track and jet collections
108  mcEventToken = mayConsume<edm::HepMCProduct>(pset.getUntrackedParameter<InputTag>("MCEvent",std::string("")));
109  genJetCollToken = mayConsume<reco::GenJetCollection>(pset.getUntrackedParameter<InputTag>("GenJetCollectionName",std::string("")));
110  chgJetCollToken = mayConsume<reco::GenJetCollection>(pset.getUntrackedParameter<InputTag>("ChgGenJetCollectionName",std::string("")));
111  tracksJetCollToken = consumes<reco::BasicJetCollection>(pset.getUntrackedParameter<InputTag>("TracksJetCollectionName",std::string("")));
112  recoCaloJetCollToken = consumes<reco::CaloJetCollection>(pset.getUntrackedParameter<InputTag>("RecoCaloJetCollectionName",std::string("")));
113  chgGenPartCollToken = mayConsume<std::vector<reco::GenParticle> >(pset.getUntrackedParameter<InputTag>("ChgGenPartCollectionName",std::string("")));
114  tracksCollToken = consumes<reco::CandidateCollection>(pset.getUntrackedParameter<InputTag>("TracksCollectionName",std::string("")));
115 
116  // trigger results
117  triggerResultsToken = consumes<edm::TriggerResults>(pset.getParameter<InputTag>("triggerResults"));
118  // hltFilterTag = pset.getParameter<InputTag>("hltFilter");
119  // triggerName = pset.getParameter<InputTag>("triggerName");
120 
121  piG = acos(-1.);
123  NumberTracks=0;
126  NumberTracksJet=0;
127  NumberCaloJet=0;
128 }
T getParameter(std::string const &) const
T getUntrackedParameter(std::string const &, T const &) const
edm::EDGetTokenT< edm::HepMCProduct > mcEventToken
edm::EDGetTokenT< reco::CandidateCollection > tracksCollToken
edm::EDGetTokenT< edm::TriggerResults > triggerResultsToken
edm::EDGetTokenT< reco::BasicJetCollection > tracksJetCollToken
edm::EDGetTokenT< std::vector< reco::GenParticle > > chgGenPartCollToken
edm::EDGetTokenT< reco::CaloJetCollection > recoCaloJetCollToken
edm::EDGetTokenT< reco::GenJetCollection > genJetCollToken
edm::EDGetTokenT< reco::GenJetCollection > chgJetCollToken
AnalysisRootpleProducer::~AnalysisRootpleProducer ( )
inlineoverride

Member Function Documentation

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

Definition at line 211 of file AnalysisRootpleProducer.cc.

References RecoMET_Cosmics_cff::fillTracks, nanoDQM_cfi::GenPart, edm::Event::getByToken(), gather_cfg::Tracks, edm::TriggerNames::triggerName(), edm::Event::triggerNames(), and edm::triggerResults().

Referenced by ~AnalysisRootpleProducer().

212 {
213 
215  const edm::TriggerNames & triggerNames = e.triggerNames(*triggerResults);
216 
217  acceptedTriggers->Clear();
218  unsigned int iAcceptedTriggers( 0 );
219  if ( triggerResults.product()->wasrun() )
220  {
221  //cout << "at least one path out of " << triggerResults.product()->size() << " ran? " << triggerResults.product()->wasrun() << endl;
222 
223  if ( triggerResults.product()->accept() )
224  {
225  //cout << endl << "at least one path accepted? " << triggerResults.product()->accept() << endl;
226 
227  const unsigned int n_TriggerResults( triggerResults.product()->size() );
228  for ( unsigned int itrig( 0 ); itrig < n_TriggerResults; ++itrig )
229  {
230  if ( triggerResults.product()->accept( itrig ) )
231  {
232  //cout << "path " << triggerNames.triggerName( itrig );
233  //cout << ", module index " << triggerResults.product()->index( itrig );
234  //cout << ", state (Ready = 0, Pass = 1, Fail = 2, Exception = 3) " << triggerResults.product()->state( itrig );
235  //cout << ", accept " << triggerResults.product()->accept( itrig );
236  //cout << endl;
237 
238  // save name of accepted trigger path
239  new((*acceptedTriggers)[iAcceptedTriggers]) TObjString( (triggerNames.triggerName( itrig )).c_str() );
240  ++iAcceptedTriggers;
241  }
242  }
243  }
244  }
245 
246  // gen level analysis
247  // skipped, if onlyRECO flag set to true
248 
249  if(!onlyRECO){
250 
255 
256  const HepMC::GenEvent* Evt = EvtHandle->GetEvent() ;
257 
258  EventKind = Evt->signal_process_id();
259 
260  std::vector<math::XYZTLorentzVector> GenPart;
261  std::vector<GenJet> ChgGenJetContainer;
262  std::vector<GenJet> GenJetContainer;
263 
264  GenPart.clear();
265  ChgGenJetContainer.clear();
266  GenJetContainer.clear();
267  MonteCarlo->Clear();
268  InclusiveJet->Clear();
269  ChargedJet->Clear();
270 
271  // jets from charged particles at hadron level
272  if (!ChgGenJetsHandle->empty()){
273 
274  for ( GenJetCollection::const_iterator it(ChgGenJetsHandle->begin()), itEnd(ChgGenJetsHandle->end());
275  it!=itEnd; ++it)
276  {
277  ChgGenJetContainer.push_back(*it);
278  }
279 
280  std::stable_sort(ChgGenJetContainer.begin(),ChgGenJetContainer.end(),GenJetSort());
281 
282  std::vector<GenJet>::const_iterator it(ChgGenJetContainer.begin()), itEnd(ChgGenJetContainer.end());
283  for ( int iChargedJet(0); it != itEnd; ++it, ++iChargedJet)
284  {
285  fillChargedJet(it->p(),it->pt(),it->eta(),it->phi());
286  new((*ChargedJet)[iChargedJet]) TLorentzVector(it->px(), it->py(), it->pz(), it->energy());
287  }
288  }
289 
290 
291  // GenJets
292  if (!GenJetsHandle->empty()){
293 
294  for ( GenJetCollection::const_iterator it(GenJetsHandle->begin()), itEnd(GenJetsHandle->end());
295  it!=itEnd; ++it )
296  {
297  GenJetContainer.push_back(*it);
298  }
299 
300  std::stable_sort(GenJetContainer.begin(),GenJetContainer.end(),GenJetSort());
301 
302  std::vector<GenJet>::const_iterator it(GenJetContainer.begin()), itEnd(GenJetContainer.end());
303  for ( int iInclusiveJet(0); it != itEnd; ++it, ++iInclusiveJet)
304  {
305  fillInclusiveJet(it->p(),it->pt(),it->eta(),it->phi());
306  new((*InclusiveJet)[iInclusiveJet]) TLorentzVector(it->px(), it->py(), it->pz(), it->energy());
307  }
308  }
309 
310 
311  // hadron level particles
312  if (!CandHandleMC->empty()){
313 
314  for (vector<GenParticle>::const_iterator it(CandHandleMC->begin()), itEnd(CandHandleMC->end());
315  it != itEnd;it++)
316  {
317  GenPart.push_back(it->p4());
318  }
319 
320  std::stable_sort(GenPart.begin(),GenPart.end(),GreaterPt());
321 
322  std::vector<math::XYZTLorentzVector>::const_iterator it(GenPart.begin()), itEnd(GenPart.end());
323  for( int iMonteCarlo(0); it != itEnd; ++it, ++iMonteCarlo )
324  {
325  fillMCParticles(it->P(),it->Pt(),it->Eta(),it->Phi());
326  new((*MonteCarlo)[iMonteCarlo]) TLorentzVector(it->Px(), it->Py(), it->Pz(), it->E());
327  }
328  }
329 
330  }
331 
332 
333  // reco level analysis
334 
338 
339  std::vector<math::XYZTLorentzVector> Tracks;
340  std::vector<BasicJet> TracksJetContainer;
341  std::vector<CaloJet> RecoCaloJetContainer;
342 
343  Tracks.clear();
344  TracksJetContainer.clear();
345  RecoCaloJetContainer.clear();
346 
347  Track->Clear();
348  TracksJet->Clear();
349  CalorimeterJet->Clear();
350 
351  if(!RecoCaloJetsHandle->empty())
352  {
353  for(CaloJetCollection::const_iterator it(RecoCaloJetsHandle->begin()), itEnd(RecoCaloJetsHandle->end());
354  it!=itEnd;++it)
355  {
356  RecoCaloJetContainer.push_back(*it);
357  }
358  std::stable_sort(RecoCaloJetContainer.begin(),RecoCaloJetContainer.end(),CaloJetSort());
359 
360  std::vector<CaloJet>::const_iterator it(RecoCaloJetContainer.begin()), itEnd(RecoCaloJetContainer.end());
361  for( int iCalorimeterJet(0); it != itEnd; ++it, ++iCalorimeterJet)
362  {
363  fillCaloJet(it->p(),it->pt(),it->eta(),it->phi());
364  new((*CalorimeterJet)[iCalorimeterJet]) TLorentzVector(it->px(), it->py(), it->pz(), it->energy());
365  }
366  }
367 
368  if(!TracksJetsHandle->empty())
369  {
370  for(BasicJetCollection::const_iterator it(TracksJetsHandle->begin()), itEnd(TracksJetsHandle->end());
371  it!=itEnd;++it)
372  {
373  TracksJetContainer.push_back(*it);
374  }
375  std::stable_sort(TracksJetContainer.begin(),TracksJetContainer.end(),BasicJetSort());
376 
377  std::vector<BasicJet>::const_iterator it(TracksJetContainer.begin()), itEnd(TracksJetContainer.end());
378  for(int iTracksJet(0); it != itEnd; ++it, ++iTracksJet)
379  {
380  fillTracksJet(it->p(),it->pt(),it->eta(),it->phi());
381  new((*TracksJet)[iTracksJet]) TLorentzVector(it->px(), it->py(), it->pz(), it->energy());
382  }
383  }
384 
385  if(!CandHandleRECO->empty())
386  {
387  for(CandidateCollection::const_iterator it(CandHandleRECO->begin()), itEnd(CandHandleRECO->end());
388  it!=itEnd;++it)
389  {
390  Tracks.push_back(it->p4());
391  }
392  std::stable_sort(Tracks.begin(),Tracks.end(),GreaterPt());
393 
394  std::vector<math::XYZTLorentzVector>::const_iterator it( Tracks.begin()), itEnd(Tracks.end());
395  for(int iTracks(0); it != itEnd; ++it, ++iTracks)
396  {
397  fillTracks(it->P(),it->Pt(),it->Eta(),it->Phi());
398  new ((*Track)[iTracks]) TLorentzVector(it->Px(), it->Py(), it->Pz(), it->E());
399  }
400  }
401 
402  store();
403 }
bool wasrun() const
Was at least one path run?
edm::Handle< reco::GenJetCollection > GenJetsHandle
void fillTracks(float, float, float, float)
edm::Handle< reco::GenJetCollection > ChgGenJetsHandle
edm::EDGetTokenT< edm::HepMCProduct > mcEventToken
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:508
void fillTracksJet(float, float, float, float)
edm::EDGetTokenT< reco::CandidateCollection > tracksCollToken
bool accept() const
Has at least one path accepted the event?
edm::EDGetTokenT< edm::TriggerResults > triggerResultsToken
void fillChargedJet(float, float, float, float)
void fillInclusiveJet(float, float, float, float)
iterator begin()
Definition: OwnVector.h:244
edm::Handle< edm::TriggerResults > triggerResults
unsigned int size() const
Get number of paths stored.
bool empty() const
Definition: OwnVector.h:269
edm::EDGetTokenT< reco::BasicJetCollection > tracksJetCollToken
edm::Handle< edm::HepMCProduct > EvtHandle
edm::EDGetTokenT< std::vector< reco::GenParticle > > chgGenPartCollToken
iterator end()
Definition: OwnVector.h:249
edm::EDGetTokenT< reco::CaloJetCollection > recoCaloJetCollToken
const HepMC::GenEvent * GetEvent() const
Definition: HepMCProduct.h:38
T const * product() const
Definition: Handle.h:81
void fillCaloJet(float, float, float, float)
edm::Handle< std::vector< reco::GenParticle > > CandHandleMC
std::string const & triggerName(unsigned int index) const
Definition: TriggerNames.cc:27
edm::Handle< reco::CandidateCollection > CandHandleRECO
edm::Handle< reco::BasicJetCollection > TracksJetsHandle
edm::Handle< reco::CaloJetCollection > RecoCaloJetsHandle
edm::EDGetTokenT< reco::GenJetCollection > genJetCollToken
void fillMCParticles(float, float, float, float)
edm::EDGetTokenT< reco::GenJetCollection > chgJetCollToken
edm::TriggerNames const & triggerNames(edm::TriggerResults const &triggerResults) const override
Definition: Event.cc:272
void AnalysisRootpleProducer::beginJob ( void  )
overridevirtual

Reimplemented from edm::EDAnalyzer.

Definition at line 130 of file AnalysisRootpleProducer.cc.

Referenced by ~AnalysisRootpleProducer().

131 {
132 
133  // use TFileService for output to root file
134  AnalysisTree = fs->make<TTree>("AnalysisTree","MBUE Analysis Tree ");
135 
136  AnalysisTree->Branch("EventKind",&EventKind,"EventKind/I");
137 
138  // store p, pt, eta, phi for particles and jets
139 
140  // GenParticles at hadron level
141  AnalysisTree->Branch("NumberMCParticles",&NumberMCParticles,"NumberMCParticles/I");
142  AnalysisTree->Branch("MomentumMC",MomentumMC,"MomentumMC[NumberMCParticles]/F");
143  AnalysisTree->Branch("TransverseMomentumMC",TransverseMomentumMC,"TransverseMomentumMC[NumberMCParticles]/F");
144  AnalysisTree->Branch("EtaMC",EtaMC,"EtaMC[NumberMCParticles]/F");
145  AnalysisTree->Branch("PhiMC",PhiMC,"PhiMC[NumberMCParticles]/F");
146 
147  // tracks
148  AnalysisTree->Branch("NumberTracks",&NumberTracks,"NumberTracks/I");
149  AnalysisTree->Branch("MomentumTK",MomentumTK,"MomentumTK[NumberTracks]/F");
150  AnalysisTree->Branch("TrasverseMomentumTK",TransverseMomentumTK,"TransverseMomentumTK[NumberTracks]/F");
151  AnalysisTree->Branch("EtaTK",EtaTK,"EtaTK[NumberTracks]/F");
152  AnalysisTree->Branch("PhiTK",PhiTK,"PhiTK[NumberTracks]/F");
153 
154  // GenJets
155  AnalysisTree->Branch("NumberInclusiveJet",&NumberInclusiveJet,"NumberInclusiveJet/I");
156  AnalysisTree->Branch("MomentumIJ",MomentumIJ,"MomentumIJ[NumberInclusiveJet]/F");
157  AnalysisTree->Branch("TrasverseMomentumIJ",TransverseMomentumIJ,"TransverseMomentumIJ[NumberInclusiveJet]/F");
158  AnalysisTree->Branch("EtaIJ",EtaIJ,"EtaIJ[NumberInclusiveJet]/F");
159  AnalysisTree->Branch("PhiIJ",PhiIJ,"PhiIJ[NumberInclusiveJet]/F");
160 
161  // jets from charged GenParticles
162  AnalysisTree->Branch("NumberChargedJet",&NumberChargedJet,"NumberChargedJet/I");
163  AnalysisTree->Branch("MomentumCJ",MomentumCJ,"MomentumCJ[NumberChargedJet]/F");
164  AnalysisTree->Branch("TrasverseMomentumCJ",TransverseMomentumCJ,"TransverseMomentumCJ[NumberChargedJet]/F");
165  AnalysisTree->Branch("EtaCJ",EtaCJ,"EtaCJ[NumberChargedJet]/F");
166  AnalysisTree->Branch("PhiCJ",PhiCJ,"PhiCJ[NumberChargedJet]/F");
167 
168  // jets from tracks
169  AnalysisTree->Branch("NumberTracksJet",&NumberTracksJet,"NumberTracksJet/I");
170  AnalysisTree->Branch("MomentumTJ",MomentumTJ,"MomentumTJ[NumberTracksJet]/F");
171  AnalysisTree->Branch("TrasverseMomentumTJ",TransverseMomentumTJ,"TransverseMomentumTJ[NumberTracksJet]/F");
172  AnalysisTree->Branch("EtaTJ",EtaTJ,"EtaTJ[NumberTracksJet]/F");
173  AnalysisTree->Branch("PhiTJ",PhiTJ,"PhiTJ[NumberTracksJet]/F");
174 
175  // jets from calorimeter towers
176  AnalysisTree->Branch("NumberCaloJet",&NumberCaloJet,"NumberCaloJet/I");
177  AnalysisTree->Branch("MomentumEHJ",MomentumEHJ,"MomentumEHJ[NumberCaloJet]/F");
178  AnalysisTree->Branch("TrasverseMomentumEHJ",TransverseMomentumEHJ,"TransverseMomentumEHJ[NumberCaloJet]/F");
179  AnalysisTree->Branch("EtaEHJ",EtaEHJ,"EtaEHJ[NumberCaloJet]/F");
180  AnalysisTree->Branch("PhiEHJ",PhiEHJ,"PhiEHJ[NumberCaloJet]/F");
181 
182 
183  // alternative storage method:
184  // save TClonesArrays of TLorentzVectors
185  // i.e. store 4-vectors of particles and jets
186 
187  MonteCarlo = new TClonesArray("TLorentzVector", 10000);
188  AnalysisTree->Branch("MonteCarlo", "TClonesArray", &MonteCarlo, 128000, 0);
189 
190  Track = new TClonesArray("TLorentzVector", 10000);
191  AnalysisTree->Branch("Track", "TClonesArray", &Track, 128000, 0);
192 
193  InclusiveJet = new TClonesArray("TLorentzVector", 10000);
194  AnalysisTree->Branch("InclusiveJet", "TClonesArray", &InclusiveJet, 128000, 0);
195 
196  ChargedJet = new TClonesArray("TLorentzVector", 10000);
197  AnalysisTree->Branch("ChargedJet", "TClonesArray", &ChargedJet, 128000, 0);
198 
199  TracksJet = new TClonesArray("TLorentzVector", 10000);
200  AnalysisTree->Branch("TracksJet", "TClonesArray", &TracksJet, 128000, 0);
201 
202  CalorimeterJet = new TClonesArray("TLorentzVector", 10000);
203  AnalysisTree->Branch("CalorimeterJet", "TClonesArray", &CalorimeterJet, 128000, 0);
204 
205  acceptedTriggers = new TClonesArray("TObjString", 10000);
206  AnalysisTree->Branch("acceptedTriggers", "TClonesArray", &acceptedTriggers, 128000, 0);
207 
208 }
T * make(const Args &...args) const
make new ROOT object
Definition: TFileService.h:64
edm::Service< TFileService > fs
void AnalysisRootpleProducer::endJob ( void  )
overridevirtual

Reimplemented from edm::EDAnalyzer.

Definition at line 405 of file AnalysisRootpleProducer.cc.

Referenced by ~AnalysisRootpleProducer().

406 {
407 }
void AnalysisRootpleProducer::fillCaloJet ( float  p,
float  pt,
float  eta,
float  phi 
)
void AnalysisRootpleProducer::fillChargedJet ( float  p,
float  pt,
float  eta,
float  phi 
)
void AnalysisRootpleProducer::fillEventInfo ( int  e)
void AnalysisRootpleProducer::fillInclusiveJet ( float  p,
float  pt,
float  eta,
float  phi 
)
void AnalysisRootpleProducer::fillMCParticles ( float  p,
float  pt,
float  eta,
float  phi 
)
void AnalysisRootpleProducer::fillTracks ( float  p,
float  pt,
float  eta,
float  phi 
)
void AnalysisRootpleProducer::fillTracksJet ( float  p,
float  pt,
float  eta,
float  phi 
)
void AnalysisRootpleProducer::store ( )

Member Data Documentation

TClonesArray* AnalysisRootpleProducer::acceptedTriggers
private

Definition at line 114 of file AnalysisRootpleProducer.h.

TTree* AnalysisRootpleProducer::AnalysisTree
private

Definition at line 90 of file AnalysisRootpleProducer.h.

TClonesArray* AnalysisRootpleProducer::CalorimeterJet
private

Definition at line 113 of file AnalysisRootpleProducer.h.

edm::Handle< std::vector<reco::GenParticle> > AnalysisRootpleProducer::CandHandleMC
private

Definition at line 77 of file AnalysisRootpleProducer.h.

edm::Handle< reco::CandidateCollection > AnalysisRootpleProducer::CandHandleRECO
private

Definition at line 80 of file AnalysisRootpleProducer.h.

TClonesArray* AnalysisRootpleProducer::ChargedJet
private

Definition at line 110 of file AnalysisRootpleProducer.h.

edm::Handle< reco::GenJetCollection > AnalysisRootpleProducer::ChgGenJetsHandle
private

Definition at line 79 of file AnalysisRootpleProducer.h.

edm::EDGetTokenT< std::vector<reco::GenParticle> > AnalysisRootpleProducer::chgGenPartCollToken
private

Definition at line 70 of file AnalysisRootpleProducer.h.

edm::EDGetTokenT< reco::GenJetCollection > AnalysisRootpleProducer::chgJetCollToken
private

Definition at line 69 of file AnalysisRootpleProducer.h.

float AnalysisRootpleProducer::EtaCJ[NCJMAX]
private

Definition at line 104 of file AnalysisRootpleProducer.h.

float AnalysisRootpleProducer::EtaEHJ[NEHJMAX]
private

Definition at line 106 of file AnalysisRootpleProducer.h.

float AnalysisRootpleProducer::EtaIJ[NIJMAX]
private

Definition at line 103 of file AnalysisRootpleProducer.h.

float AnalysisRootpleProducer::EtaMC[NMCPMAX]
private

Definition at line 101 of file AnalysisRootpleProducer.h.

float AnalysisRootpleProducer::EtaTJ[NTJMAX]
private

Definition at line 105 of file AnalysisRootpleProducer.h.

float AnalysisRootpleProducer::EtaTK[NTKMAX]
private

Definition at line 102 of file AnalysisRootpleProducer.h.

int AnalysisRootpleProducer::EventKind
private

Definition at line 99 of file AnalysisRootpleProducer.h.

edm::Handle< edm::HepMCProduct > AnalysisRootpleProducer::EvtHandle
private

Definition at line 76 of file AnalysisRootpleProducer.h.

edm::Service<TFileService> AnalysisRootpleProducer::fs
private

Definition at line 86 of file AnalysisRootpleProducer.h.

edm::EDGetTokenT< reco::GenJetCollection > AnalysisRootpleProducer::genJetCollToken
private

Definition at line 68 of file AnalysisRootpleProducer.h.

edm::Handle< reco::GenJetCollection > AnalysisRootpleProducer::GenJetsHandle
private

Definition at line 78 of file AnalysisRootpleProducer.h.

TClonesArray* AnalysisRootpleProducer::InclusiveJet
private

Definition at line 109 of file AnalysisRootpleProducer.h.

edm::EDGetTokenT< edm::HepMCProduct > AnalysisRootpleProducer::mcEventToken
private

Definition at line 67 of file AnalysisRootpleProducer.h.

float AnalysisRootpleProducer::MomentumCJ[NCJMAX]
private

Definition at line 104 of file AnalysisRootpleProducer.h.

float AnalysisRootpleProducer::MomentumEHJ[NEHJMAX]
private

Definition at line 106 of file AnalysisRootpleProducer.h.

float AnalysisRootpleProducer::MomentumIJ[NIJMAX]
private

Definition at line 103 of file AnalysisRootpleProducer.h.

float AnalysisRootpleProducer::MomentumMC[NMCPMAX]
private

Definition at line 101 of file AnalysisRootpleProducer.h.

float AnalysisRootpleProducer::MomentumTJ[NTJMAX]
private

Definition at line 105 of file AnalysisRootpleProducer.h.

float AnalysisRootpleProducer::MomentumTK[NTKMAX]
private

Definition at line 102 of file AnalysisRootpleProducer.h.

TClonesArray* AnalysisRootpleProducer::MonteCarlo
private

Definition at line 108 of file AnalysisRootpleProducer.h.

const int AnalysisRootpleProducer::NCJMAX = 10000
staticprivate

Definition at line 95 of file AnalysisRootpleProducer.h.

const int AnalysisRootpleProducer::NEHJMAX = 10000
staticprivate

Definition at line 97 of file AnalysisRootpleProducer.h.

const int AnalysisRootpleProducer::NIJMAX = 10000
staticprivate

Definition at line 94 of file AnalysisRootpleProducer.h.

const int AnalysisRootpleProducer::NMCPMAX = 10000
staticprivate

Definition at line 92 of file AnalysisRootpleProducer.h.

const int AnalysisRootpleProducer::NTJMAX = 10000
staticprivate

Definition at line 96 of file AnalysisRootpleProducer.h.

const int AnalysisRootpleProducer::NTKMAX = 10000
staticprivate

Definition at line 93 of file AnalysisRootpleProducer.h.

int AnalysisRootpleProducer::NumberCaloJet
private

Definition at line 99 of file AnalysisRootpleProducer.h.

int AnalysisRootpleProducer::NumberChargedJet
private

Definition at line 99 of file AnalysisRootpleProducer.h.

int AnalysisRootpleProducer::NumberInclusiveJet
private

Definition at line 99 of file AnalysisRootpleProducer.h.

int AnalysisRootpleProducer::NumberMCParticles
private

Definition at line 99 of file AnalysisRootpleProducer.h.

int AnalysisRootpleProducer::NumberTracks
private

Definition at line 99 of file AnalysisRootpleProducer.h.

int AnalysisRootpleProducer::NumberTracksJet
private

Definition at line 99 of file AnalysisRootpleProducer.h.

bool AnalysisRootpleProducer::onlyRECO
private

Definition at line 65 of file AnalysisRootpleProducer.h.

float AnalysisRootpleProducer::PhiCJ[NCJMAX]
private

Definition at line 104 of file AnalysisRootpleProducer.h.

float AnalysisRootpleProducer::PhiEHJ[NEHJMAX]
private

Definition at line 106 of file AnalysisRootpleProducer.h.

float AnalysisRootpleProducer::PhiIJ[NIJMAX]
private

Definition at line 103 of file AnalysisRootpleProducer.h.

float AnalysisRootpleProducer::PhiMC[NMCPMAX]
private

Definition at line 101 of file AnalysisRootpleProducer.h.

float AnalysisRootpleProducer::PhiTJ[NTJMAX]
private

Definition at line 105 of file AnalysisRootpleProducer.h.

float AnalysisRootpleProducer::PhiTK[NTKMAX]
private

Definition at line 102 of file AnalysisRootpleProducer.h.

float AnalysisRootpleProducer::piG
private

Definition at line 88 of file AnalysisRootpleProducer.h.

edm::EDGetTokenT< reco::CaloJetCollection > AnalysisRootpleProducer::recoCaloJetCollToken
private

Definition at line 72 of file AnalysisRootpleProducer.h.

edm::Handle< reco::CaloJetCollection > AnalysisRootpleProducer::RecoCaloJetsHandle
private

Definition at line 82 of file AnalysisRootpleProducer.h.

TClonesArray* AnalysisRootpleProducer::Track
private

Definition at line 111 of file AnalysisRootpleProducer.h.

edm::EDGetTokenT< reco::CandidateCollection > AnalysisRootpleProducer::tracksCollToken
private

Definition at line 73 of file AnalysisRootpleProducer.h.

TClonesArray* AnalysisRootpleProducer::TracksJet
private

Definition at line 112 of file AnalysisRootpleProducer.h.

edm::EDGetTokenT< reco::BasicJetCollection > AnalysisRootpleProducer::tracksJetCollToken
private

Definition at line 71 of file AnalysisRootpleProducer.h.

edm::Handle< reco::BasicJetCollection > AnalysisRootpleProducer::TracksJetsHandle
private

Definition at line 81 of file AnalysisRootpleProducer.h.

float AnalysisRootpleProducer::TransverseMomentumCJ[NCJMAX]
private

Definition at line 104 of file AnalysisRootpleProducer.h.

float AnalysisRootpleProducer::TransverseMomentumEHJ[NEHJMAX]
private

Definition at line 106 of file AnalysisRootpleProducer.h.

float AnalysisRootpleProducer::TransverseMomentumIJ[NIJMAX]
private

Definition at line 103 of file AnalysisRootpleProducer.h.

float AnalysisRootpleProducer::TransverseMomentumMC[NMCPMAX]
private

Definition at line 101 of file AnalysisRootpleProducer.h.

float AnalysisRootpleProducer::TransverseMomentumTJ[NTJMAX]
private

Definition at line 105 of file AnalysisRootpleProducer.h.

float AnalysisRootpleProducer::TransverseMomentumTK[NTKMAX]
private

Definition at line 102 of file AnalysisRootpleProducer.h.

edm::Handle< edm::TriggerResults > AnalysisRootpleProducer::triggerResults
private

Definition at line 83 of file AnalysisRootpleProducer.h.

edm::EDGetTokenT< edm::TriggerResults > AnalysisRootpleProducer::triggerResultsToken
private

Definition at line 74 of file AnalysisRootpleProducer.h.