#include <XANADOO/domain/interface/XANAEsdEvent.h>
#include <XANADOO/XANAClusters/interface/XANACluster.h>
#include <XANADOO/XANAClusters/interface/XANACaloRecHit.h>
#include <XANADOO/XANAClusters/interface/XANAEmCluster.h>
#include <XANADOO/XANAClusters/interface/XANASuperCluster.h>
#include <XANADOO/XANAClusters/interface/XANAHadCluster.h>
#include <XANADOO/XANATracks/interface/XANATrack.h>
#include <XANADOO/XANAMcInfo/interface/XANAGeneratorEvent.h>
#include <XANADOO/XANAMcInfo/interface/XANAGeantEvent.h>
#include <XANADOO/XANAMcInfo/interface/XANAGeneratorParticle.h>
#include <XANADOO/XANAElectronCandidate/interface/XANAElectronCandidate.h>
#include <XANADOO/XANAElectronCandidate/interface/XANAElectronTrack.h>
#include <XANADOO/XANAElectronCandidate/interface/XANAElectronSeed.h>
#include <XANADOO/XANAMuons/interface/XANAMuonCandidate.h>
#include <XANADOO/XANATriggerInfo/interface/XANATriggerInfo.h>
#include <XANADOO/XANAJets/interface/XANAJet.h>
#include "TTree.h"
#include "TBits.h"
#include "TObjectTable.h"
#include "TFile.h"
#include "TBranch.h"
#include "TClonesArray.h"
#include "TObjArray.h"
#include "TH1.h"
#include "TH2.h"
#include "TSystem.h"
#include "TChain.h"
#include <string>
Include dependency graph for readESD.cpp:
Go to the source code of this file.
Functions | |
int | main (int argc, char **argv) |
|
Definition at line 36 of file readESD.cpp. References XANAGeantEvent::clear(), XANAGeneratorEvent::clear(), XANAEsdEvent::clear(), XANAElectronSeed::getAlgoName(), XANATrack::getAlgoName(), XANAElectronCandidate::getAlgoName(), XANAElectronCandidate::getBremClusters(), XANAElectronCandidate::getCaloIsolation(), XANATrack::getCharge(), XANATrack::getChi2OverDof(), XANAElectronCandidate::getDeltaEtaSeedClusterAtCalo(), XANAElectronCandidate::getDeltaEtaSuperClusterAtCalo(), XANAElectronCandidate::getDeltaEtaSuperClusterAtVtx(), XANAElectronCandidate::getDeltaPhiSeedClusterAtCalo(), XANAElectronCandidate::getDeltaPhiSuperClusterAtCalo(), XANAElectronCandidate::getDeltaPhiSuperClusterAtVtx(), XANAElectronTrack::getElectronCandidate(), XANAEsdEvent::getElectronCandidates(), XANAElectronTrack::getElectronSeed(), XANAElectronSeed::getElectronTrack(), XANAElectronCandidate::getElectronTrack(), XANAEsdEvent::getElectronTracks(), XANAEsdEvent::getEleTrackHits(), XANAEsdEvent::getEmClusterHits(), XANAEsdEvent::getEmClusters(), XANASuperCluster::getEnergy(), XANAElectronCandidate::getESeedClusterOverP(), XANAElectronCandidate::getESuperClusterOverP(), XANAElectronCandidate::getEta(), XANATriggerInfo::getGlobalL1Decision(), XANATriggerInfo::getGlobalL1Response(), XANAEsdEvent::getHadClusters(), XANAElectronCandidate::getHadronicOverEm(), XANATriggerInfo::getHltDecision(), XANATriggerInfo::getHltResponse(), XANATrack::getImpactParameter(), XANAEsdEvent::getJets(), XANATrack::getLongImpactParameter(), XANATrack::getMomentumAtFirstPoint(), XANATrack::getMomentumAtLastPoint(), XANATrack::getMomentumAtVertex(), XANAElectronCandidate::getMomentumAtVertex(), XANAEsdEvent::getMuonCandidates(), XANAEsdEvent::getNumberOfAllTrackHits(), XANAEsdEvent::getNumberOfCaloRecHits(), XANAEsdEvent::getNumberOfElectronCandidates(), XANAEsdEvent::getNumberOfElectronTracks(), XANAEsdEvent::getNumberOfEleTrackHits(), XANAEsdEvent::getNumberOfEmClusterHits(), XANAEsdEvent::getNumberOfEmClusters(), XANAGeantEvent::getNumberOfGeantTracks(), XANAGeantEvent::getNumberOfGeantVertices(), XANAEsdEvent::getNumberOfHadClusters(), XANAElectronSeed::getNumberOfHits(), XANATrack::getNumberOfHits(), XANAEsdEvent::getNumberOfJets(), XANATrack::getNumberOfLostHits(), XANAEsdEvent::getNumberOfMuonCandidates(), XANAGeneratorEvent::getNumberOfParticles(), XANAGeneratorEvent::getNumberOfPileupParticles(), XANAEsdEvent::getNumberOfPreshClusters(), XANAGeneratorEvent::getNumberOfSignalParticles(), XANAGeneratorEvent::getNumberOfStablePileupParticles(), XANAGeneratorEvent::getNumberOfStableSignalParticles(), XANAEsdEvent::getNumberOfSuperClusters(), XANAEsdEvent::getNumberOfTracks(), XANAEsdEvent::getNumberOfVertexTracks(), XANAEsdEvent::getNumberOfVertices(), XANAElectronCandidate::getPhi(), XANASuperCluster::getPosition(), XANATrack::getPositionAtFirstPoint(), XANATrack::getPositionAtLastPoint(), XANAEsdEvent::getPreshClusters(), XANAElectronCandidate::getPt(), XANAElectronCandidate::getSeedCluster(), XANAElectronSeed::getSuperCluster(), XANAElectronTrack::getSuperCluster(), XANAElectronCandidate::getSuperCluster(), XANAElectronCandidate::getSuperClusterPosition(), XANAEsdEvent::getSuperClusters(), XANAElectronCandidate::getTrackIsolation(), XANAElectronCandidate::getTrackMomentumAtCalo(), XANAElectronCandidate::getTrackPositionAtCalo(), XANAEsdEvent::getTracks(), XANATrack::getTransImpactParameter(), XANAEsdEvent::getTriggerInfo(), XANATrack::getVertex(), and XANAEsdEvent::getVertices().
00037 { 00038 // Connect to file generated 00039 TFile *f; 00040 // if (argc==1) f = new TFile("SE04_E25_Pall_PT30.root"); 00041 if (argc==1) f = new TFile("h300eemm.root"); 00042 else f = new TFile(*++argv); 00043 00044 // Read Tree named "T" in memory. Tree pointer is assigned the same name 00045 TTree *T = (TTree*)f->Get("ESD"); 00046 00047 // version TChain 00048 // TChain *T = new TChain("ESD"); 00049 // T->Add("file1.root"); 00050 // T->Add("file2.root"); 00051 00052 // example of how to suppress reading of branches 00053 // has to be put before setting the branch addresses! 00054 // T->SetBranchStatus("GeantEvent*",0); 00055 00056 // Reconstructed event 00057 XANAEsdEvent *event = new XANAEsdEvent(); 00058 T->SetBranchAddress("Event.",&event); 00059 // MC information (generator and GEANT event) 00060 XANAGeneratorEvent *generatorEvent = new XANAGeneratorEvent(); 00061 T->SetBranchAddress("GeneratorEvent.",&generatorEvent); 00062 00063 XANAGeantEvent *geantEvent = new XANAGeantEvent(); 00064 T->SetBranchAddress("GeantEvent.",&geantEvent); 00065 00066 Short_t nc = 0, nh = 0, nhc = 0, ns = 0, npc = 0, nt = 0, nv = 0, nvt = 0; 00067 Short_t ne = 0, nm=0, nelt = 0; 00068 00069 TObjArray *clusters = 0; 00070 TObjArray *hadClusters = 0; 00071 TObjArray *superClusters = 0; 00072 TObjArray *preshClusters = 0; 00073 TRefArray *hits = 0; 00074 TObjArray *tracks = 0; 00075 TObjArray *vertices = 0; 00076 TObjArray *electrons = 0; 00077 TObjArray *electronTracks = 0; 00078 TObjArray *muons = 0; 00079 00080 Short_t mc_np = 0, mc_nsp = 0, mc_nssp = 0, mc_npp = 0, mc_nspp = 0, mc_ngt = 0, mc_ngv = 0; 00081 00082 // Start main loop on all events 00083 Int_t nb = 0; 00084 Int_t nevent = (Int_t)T->GetEntries(); 00085 cout << "================== Total number of events: " << nevent << " ================" << endl; 00086 00087 for (Int_t i=0; i<nevent; i++) { 00088 nb += T->GetEntry(i); 00089 00090 cout << "================ Event: " << i << " ================" << endl; 00091 00092 // Reconstructed event 00093 00094 cout << "Reconstructed:" ; 00095 00096 nc = event->getNumberOfEmClusters(); clusters = event->getEmClusters(); 00097 nh = event->getNumberOfEmClusterHits(); hits = event->getEmClusterHits(); 00098 nhc = event->getNumberOfHadClusters(); hadClusters = event->getHadClusters(); 00099 ns = event->getNumberOfSuperClusters(); superClusters = event->getSuperClusters(); 00100 npc = event->getNumberOfPreshClusters(); preshClusters = event->getPreshClusters(); 00101 nt = event->getNumberOfTracks(); tracks = event->getTracks(); 00102 nv = event->getNumberOfVertices(); vertices = event->getVertices(); 00103 nvt = event->getNumberOfVertexTracks(); 00104 ne = event->getNumberOfElectronCandidates(); electrons = event->getElectronCandidates(); 00105 nm = event->getNumberOfMuonCandidates(); muons = event->getMuonCandidates(); 00106 nelt = event->getNumberOfElectronTracks(); 00107 electronTracks = event->getElectronTracks(); 00108 00109 XANATriggerInfo trigger(event->getTriggerInfo()); 00110 00111 cout << " clust, hits, hadClu, supers, presho, tracks, vertex, vTrack, nElec, nMuons" << endl; 00112 printf(" \t \t %d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\n", nc, nh, nhc, ns, npc, nt, nv, nvt, ne, nm); 00113 cout << " Number of electron tracks: "<<nelt <<endl; 00114 00115 // electrons 00116 for (Int_t ie=0; ie<ne; ie++) { 00117 XANAElectronCandidate *elec = (XANAElectronCandidate*)((*electrons)[ie]); 00118 cout << "new electron candidate : " << elec << endl; 00119 cout << " 4-momentum at vertex = " << elec->getMomentumAtVertex() << endl; 00120 cout << " Pt at vertex = " << elec->getPt() << endl; 00121 cout << " eta at vertex = " << elec->getEta() << endl; 00122 cout << " phi at vertex = " << elec->getPhi() << endl; 00123 cout << " track momentum at calo = " << elec->getTrackMomentumAtCalo() << endl; 00124 cout << " super cluster position = " << elec->getSuperClusterPosition() << endl; 00125 cout << " super cluster (eta,phi) = " << "("<<elec->getSuperClusterPosition().pseudoRapidity()<< 00126 ","<<elec->getSuperClusterPosition().phi()<<")"<< endl; 00127 cout << " track position at calo = " << elec->getTrackPositionAtCalo() << endl; 00128 cout << " Esuper/p = " << elec->getESuperClusterOverP() << endl; 00129 cout << " Eseed/p = " << elec->getESeedClusterOverP() << endl; 00130 cout << " deta (seed-track) at calo = " << elec->getDeltaEtaSeedClusterAtCalo() << endl; 00131 cout << " dphi (seed-track) at calo = " << elec->getDeltaPhiSeedClusterAtCalo() << endl; 00132 cout << " deta (super-track) at calo = " << elec->getDeltaEtaSuperClusterAtCalo() << endl; 00133 cout << " dphi (super-track) at calo = " << elec->getDeltaPhiSuperClusterAtCalo() << endl; 00134 cout << " deta (super-track) at vtx = " << elec->getDeltaEtaSuperClusterAtVtx() << endl; 00135 cout << " dphi (super-track) at vtx = " << elec->getDeltaPhiSuperClusterAtVtx() << endl; 00136 cout << " track iso = " << elec->getTrackIsolation() << endl; 00137 cout << " calo iso = " << elec->getCaloIsolation() << endl; 00138 cout << " had/em = " << elec->getHadronicOverEm() << endl; 00139 cout << " algo = " << elec->getAlgoName() << endl; 00140 cout << " constituant seed cluster : " << endl; 00141 cout << " seed " << elec->getSeedCluster() << endl; 00142 cout << " constituant super cluster : " << endl; 00143 cout << " super " << elec->getSuperCluster() << endl; 00144 if (elec->getSuperCluster()) { 00145 cout << " E = " << elec->getSuperCluster()->getEnergy() << endl ; 00146 cout << " (x,y,z) = " << elec->getSuperCluster()->getPosition() << endl ; 00147 } 00148 cout << " constituant brem clusters : " << endl; 00149 cout << " brems " << elec->getBremClusters() << endl; 00150 if (elec->getBremClusters()) { 00151 // for (Int_t ibr=0; ibr<elec->getBremClusters()->GetEntries(); ibr++) 00152 // cout << "new brem cluster with energy " << ((XANACluster *)(elec->getBremClusters())[i])->getEnergy() << endl; 00153 } 00154 cout << " constituant electron track : " << endl; 00155 cout << " eletk " << elec->getElectronTrack() << endl; 00156 if (elec->getElectronTrack()) { 00157 cout << " q = " << elec->getElectronTrack()->getCharge() << endl ; 00158 cout << " chi2 = " << elec->getElectronTrack()->getChi2OverDof() << endl ; 00159 cout << " n hits = " << elec->getElectronTrack()->getNumberOfHits() << endl ; 00160 cout << " lost hits = " << elec->getElectronTrack()->getNumberOfLostHits() << endl ; 00161 cout << " long impact param = " << elec->getElectronTrack()->getLongImpactParameter() << endl ; 00162 cout << " trans impact param = " << elec->getElectronTrack()->getTransImpactParameter() << endl ; 00163 cout << " 3D impact param = " << elec->getElectronTrack()->getImpactParameter() << endl ; 00164 cout << " momentum at vertex = " << elec->getElectronTrack()->getMomentumAtVertex() << endl ; 00165 cout << " momentum at first hit = " << elec->getElectronTrack()->getMomentumAtFirstPoint() << endl ; 00166 cout << " momentum at last hit = " << elec->getElectronTrack()->getMomentumAtLastPoint() << endl ; 00167 cout << " position at first hit = " << elec->getElectronTrack()->getPositionAtFirstPoint() << endl ; 00168 cout << " position at last hit = " << elec->getElectronTrack()->getPositionAtLastPoint() << endl ; 00169 cout << " track algo = " << elec->getElectronTrack()->getAlgoName() << endl; 00170 cout << " vertex = " << elec->getElectronTrack()->getVertex() << endl; 00171 cout << " super = " << elec->getElectronTrack()->getSuperCluster() << endl; 00172 // cout << " super cluster E = " << elec->getElectronTrack()->getSuperCluster()->getEnergy() << endl; 00173 cout << " elec = " << elec->getElectronTrack()->getElectronCandidate() << endl; 00174 cout << " seed = " << elec->getElectronTrack()->getElectronSeed() << endl; 00175 if (elec->getElectronTrack()->getElectronSeed()) { 00176 cout << " seed n hits = " << elec->getElectronTrack()->getElectronSeed()->getNumberOfHits() << endl; 00177 cout << " seed algo = " << elec->getElectronTrack()->getElectronSeed()->getAlgoName() << endl; 00178 cout << " seed super cluster = " << elec->getElectronTrack()->getElectronSeed()->getSuperCluster() << endl; 00179 cout << " seed electron track = " << elec->getElectronTrack()->getElectronSeed()->getElectronTrack() << endl; 00180 if (event->getEleTrackHits()) cout << " Nr of entries for electron track hits = " << event->getEleTrackHits()->GetEntries() << endl; 00181 cout << " Number of electron track hits = "<<event->getNumberOfEleTrackHits() << endl; 00182 } 00183 } 00184 } 00185 cout << endl; 00186 00187 00188 // hits 00189 Short_t nchits=event->getNumberOfCaloRecHits(); 00190 Short_t ntrhits=event->getNumberOfAllTrackHits(); 00191 Short_t nelerechits=0; 00192 if (event->getEleTrackHits()) nelerechits=event->getEleTrackHits()->GetEntries(); 00193 cout << nchits<< " CaloRecHits, " << ntrhits << " TrackHits, "<<nelerechits << " ElectronTrackHits. "<< endl; 00194 00195 // jets 00196 cout << " Jets: " << event->getNumberOfJets() <<endl; 00197 TObjArray *a =event->getJets(); 00198 for (int i=0;i<event->getNumberOfJets();i++) { 00199 cout <<" Jet "<< i <<" has "<<((XANAJet* )a->At(i))->getNumberOfClusters()<<" HadClusters "<<endl; 00200 } 00201 00202 // Monte Carlo information 00203 00204 // generator event 00205 mc_np = generatorEvent->getNumberOfParticles(); 00206 mc_nsp = generatorEvent->getNumberOfSignalParticles(); 00207 mc_nssp = generatorEvent->getNumberOfStableSignalParticles(); 00208 mc_npp = generatorEvent->getNumberOfPileupParticles(); 00209 mc_nspp = generatorEvent->getNumberOfStablePileupParticles(); 00210 00211 // GEANT event 00212 mc_ngt = geantEvent->getNumberOfGeantTracks(); 00213 mc_ngv = geantEvent->getNumberOfGeantVertices(); 00214 00215 cout <<endl; 00216 cout << "MC Info: "; 00217 cout << "parti, signl, stSig, pileup, stPil, geantTr, geantVe" << endl; 00218 printf("\t %d\t %d\t%d\t%d\t%d\t%d\t%d\n", mc_np, mc_nsp, mc_nssp, mc_npp, mc_nspp, mc_ngt, mc_ngv); 00219 00220 cout << endl; 00221 cout << "Trigger info: "; 00222 cout << "level1 decision " << trigger.getGlobalL1Decision() << " hlt decision : " << trigger.getHltDecision() << endl; 00223 cout << "Level 1 detailed response " << endl; 00224 trigger.getGlobalL1Response().Print(); 00225 cout << "HLT detailed response " << endl; 00226 trigger.getHltResponse().Print(); 00227 00228 // gObjectTable->Print(); 00229 00230 event->clear(); 00231 generatorEvent->clear(); 00232 geantEvent->clear(); 00233 } 00234 00235 cout << endl; 00236 cout << nevent << " events and " << nb << " bytes read " << endl; 00237 cout << endl; 00238 00239 // f->Close(); 00240 00241 } |