]> git.uio.no Git - u/mrichter/AliRoot.git/blob - ANALYSIS/AliRunAnalysis.cxx
Cosmetic corrections, additional debug information
[u/mrichter/AliRoot.git] / ANALYSIS / AliRunAnalysis.cxx
1 #include "AliRunAnalysis.h"
2 //________________________________
3 ///////////////////////////////////////////////////////////
4 //
5 // class AliRunAnalysis
6 //
7 //
8 //
9 // Piotr.Skowronski@cern.ch
10 //
11 ///////////////////////////////////////////////////////////
12
13 #include <stdlib.h>
14
15 #include <TString.h>
16 #include <TObjString.h>
17 #include <TClass.h>
18 #include <TFile.h>
19 #include <TKey.h>
20 #include <TObjArray.h>
21
22 #include <AliRun.h>
23 #include <AliRunLoader.h>
24 #include <AliStack.h>
25 #include <AliESDtrack.h>
26 #include <AliESD.h>
27
28
29 #include "AliEventCut.h"
30 #include "AliReader.h"
31 #include "AliVAODParticle.h"
32
33
34 ClassImp(AliRunAnalysis)
35 AliRunAnalysis::AliRunAnalysis():
36  TTask("RunAnalysis","Alice Analysis Manager")  ,
37  fReader(0x0),
38  fEventCut(0x0),
39  fCutOnSim(kFALSE),
40  fCutOnRec(kTRUE)
41 {
42   //ctor
43 }
44 /*********************************************************/
45
46 AliRunAnalysis::~AliRunAnalysis()
47 {
48   //dtor
49   delete fReader;
50   delete fEventCut;
51 }
52 /*********************************************************/
53
54 Int_t AliRunAnalysis::Run()
55 {
56  //makes analysis
57
58   if (fReader == 0x0)
59    {
60      Error("Run","Reader is not set");
61      return 1;
62    }
63   TDirectory* cwd = gDirectory; 
64  /******************************/ 
65  /*  Init Event                */ 
66  /******************************/ 
67  for (Int_t an = 0; an < fAnalysies.GetEntries(); an++)
68   {
69       AliAnalysis* analysis = (AliAnalysis*)fAnalysies.At(an);
70       analysis->Init();
71   }
72  
73  while (fReader->Next() == kFALSE)
74   {
75      AliAOD* eventrec = fReader->GetEventRec();
76      AliAOD* eventsim = fReader->GetEventSim();
77
78      /******************************/ 
79      /*  Event Cut                 */ 
80      /******************************/ 
81      if ( Rejected(eventrec,eventsim) )
82       {
83         if (AliVAODParticle::GetDebug()) Info("Run","Event rejected by Event Cut");
84         continue; //Did not pass the 
85       }
86      /******************************/ 
87      /*  Process Event             */ 
88      /******************************/ 
89      if (AliVAODParticle::GetDebug())  Info("Run","There is %d analyses",fAnalysies.GetEntries());
90      for (Int_t an = 0; an < fAnalysies.GetEntries(); an++)
91       {
92           AliAnalysis* analysis = (AliAnalysis*)fAnalysies.At(an);
93           analysis->ProcessEvent(eventrec,eventsim);
94       }
95     
96   }//end of loop over events
97
98  /******************************/ 
99  /*  Finish Event              */ 
100  /******************************/ 
101  if (cwd) cwd->cd();
102  for (Int_t an = 0; an < fAnalysies.GetEntries(); an++)
103   {
104       AliAnalysis* analysis = (AliAnalysis*)fAnalysies.At(an);
105       analysis->Finish();
106   }
107
108  return 0;   
109 }
110 /*********************************************************/
111
112 void  AliRunAnalysis::Add(AliAnalysis* a)
113 {
114   //adds a to the list of analysis
115   fAnalysies.Add(a);
116 }
117 /*********************************************************/
118
119 void AliRunAnalysis::SetEventCut(AliEventCut* evcut)
120 {
121 //Sets event -  makes a private copy
122   delete fEventCut;
123   if (evcut) fEventCut = (AliEventCut*)evcut->Clone();
124   else fEventCut = 0x0;
125 }
126
127 /*********************************************************/
128
129 Bool_t AliRunAnalysis::Rejected(AliAOD* recevent, AliAOD* simevent)
130 {
131   //checks the event cut
132   if (fEventCut == 0x0) return kFALSE;
133   
134   if (fCutOnRec)
135     if (fEventCut->Rejected(recevent)) return kTRUE;
136     
137   if (fCutOnSim)
138     if (fEventCut->Rejected(simevent)) return kTRUE;
139   
140   return kFALSE;
141 }