#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 }
|
1.2.14 written by Dimitri van Heesch,
© 1997-2002