Main Page   Namespace List   Class Hierarchy   Compound List   File List   Compound Members   File Members  

readESD.cpp File Reference

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

Include dependency graph

Go to the source code of this file.

Functions

int main (int argc, char **argv)


Function Documentation

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 }


Generated on Tue May 10 10:01:26 2005 for XANADOO by doxygen1.2.14 written by Dimitri van Heesch, © 1997-2002