1 // Usage in compiled mode
2 // gSystem->SetIncludePath("-I$ROOTSYS/include -I$ALICE_ROOT/include");
3 // gROOT->LoadMacro("test.C+");
6 #if !defined(__CINT__) || defined(__MAKECINT__)
13 #include <TStopwatch.h>
15 #include <TParticle.h>
17 // AliRoot include files
19 #include "AliRunLoader.h"
25 void test(const char * sdir =".") {
32 // Signal file, tree, and branch
34 name += "/AliESDs.root";
35 TFile * fSig = TFile::Open(name.Data());
36 TTree * tSig = (TTree*)fSig->Get("esdTree");
37 TBranch * bSig = tSig->GetBranch("ESD");
39 AliESD * esdSig = 0; // The signal ESD object is put here
40 bSig->SetAddress(&esdSig);
42 // Run loader (signal events)
44 name += "/galice.root";
45 AliRunLoader* rlSig = AliRunLoader::Open(name.Data());
49 gAlice = rlSig->GetAliRun();
51 // Now load kinematics and event header
52 rlSig->LoadKinematics();
55 // Loop on events: check that MC and data contain the same number of events
56 Long64_t nevSig = rlSig->GetNumberOfEvents();
58 cout << nevSig << " signal events" << endl;
60 Int_t lab[3]; // Labels from TOF
61 Double_t mom[3]; // Track momentum
63 for (Int_t iev=0; iev<nevSig; iev++) {
64 cout << "---------- Signal event ----------" << iev << endl;
71 AliStack * stackSig = rlSig->Stack();
72 stackSig->DumpPStack();
73 Int_t nPartSig = stackSig->GetNtrack();
75 Int_t nrec = esdSig->GetNumberOfTracks();
76 cout << nrec << " reconstructed tracks" << endl;
77 for(Int_t irec=0; irec<nrec; irec++) {
78 AliESDtrack * track = esdSig->GetTrack(irec);
79 cout << "Labels:" << endl;
80 cout << "Global: "<< track->GetLabel() << endl;
81 cout << "ITS: "<< track->GetITSLabel() << endl;
82 cout << "TPC: "<< track->GetTPCLabel() << endl;
83 cout << "TRD: "<< track->GetTRDLabel() << endl;
84 track->GetTOFLabel(lab);
85 cout << "TOF: "<< lab[0] <<" "<< lab[1] <<" "<< lab[2] << endl;
86 UInt_t label = TMath::Abs(track->GetLabel());
87 if (label>=10000000) {
88 // Underlying event. 10000000 is the
89 // value of fkMASKSTEP in AliRunDigitizer
90 cout <<"Strange, there should be no underlying event"<<endl;
93 if (label>=nPartSig) {
94 cout <<"Strange, label outside the range"<< endl;
97 TParticle * part = stackSig->Particle(label);
98 if(part) part->Print();
99 track->GetPxPyPz(mom);
100 cout <<"Momentum: "<< mom[0] <<" "<< mom[1] <<" "<< mom[2] <<endl;