#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 } |