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
18 #include "AliESDEvent.h"
19 #include "AliRunLoader.h"
25 void test(const char * sdir =".") {
32 // Signal file and tree
34 name += "/AliESDs.root";
35 TFile * fSig = TFile::Open(name.Data());
36 TTree * tSig = (TTree*)fSig->Get("esdTree");
38 AliESDEvent * esdSig = new AliESDEvent();// The signal ESD object is put here
39 esdSig->ReadFromTree(tSig);
41 // Run loader (signal events)
43 name += "/galice.root";
44 AliRunLoader* rlSig = AliRunLoader::Open(name.Data());
48 gAlice = rlSig->GetAliRun();
50 // Now load kinematics and event header
51 rlSig->LoadKinematics();
54 // Loop on events: check that MC and data contain the same number of events
55 Long64_t nevSig = rlSig->GetNumberOfEvents();
57 cout << nevSig << " signal events" << endl;
59 Int_t lab[3]; // Labels from TOF
60 Double_t mom[3]; // Track momentum
62 for (Int_t iev=0; iev<nevSig; iev++) {
63 cout << "---------- Signal event ----------" << iev << endl;
70 AliStack * stackSig = rlSig->Stack();
71 stackSig->DumpPStack();
72 Int_t nPartSig = stackSig->GetNtrack();
74 Int_t nrec = esdSig->GetNumberOfTracks();
75 cout << nrec << " reconstructed tracks" << endl;
76 for(Int_t irec=0; irec<nrec; irec++) {
77 AliESDtrack * track = esdSig->GetTrack(irec);
78 cout << "Labels:" << endl;
79 cout << "Global: "<< track->GetLabel() << endl;
80 cout << "ITS: "<< track->GetITSLabel() << endl;
81 cout << "TPC: "<< track->GetTPCLabel() << endl;
82 cout << "TRD: "<< track->GetTRDLabel() << endl;
83 track->GetTOFLabel(lab);
84 cout << "TOF: "<< lab[0] <<" "<< lab[1] <<" "<< lab[2] << endl;
85 UInt_t label = TMath::Abs(track->GetLabel());
86 if (label>=10000000) {
87 // Underlying event. 10000000 is the
88 // value of fkMASKSTEP in AliRunDigitizer
89 cout <<"Strange, there should be no underlying event"<<endl;
92 if (label>=nPartSig) {
93 cout <<"Strange, label outside the range"<< endl;
96 TParticle * part = stackSig->Particle(label);
97 if(part) part->Print();
98 track->GetPxPyPz(mom);
99 cout <<"Momentum: "<< mom[0] <<" "<< mom[1] <<" "<< mom[2] <<endl;