]> git.uio.no Git - u/mrichter/AliRoot.git/blob - ANALYSIS/AliRunAnalysis.cxx
Allowing coding conventions to be checked
[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 #include "AliEventCut.h"
29 #include "AliReader.h"
30 #include "AliVAODParticle.h"
31
32
33 ClassImp(AliRunAnalysis)
34 AliRunAnalysis::AliRunAnalysis():
35  TTask("RunAnalysis","Alice Analysis Manager")  ,
36  fReader(0x0),
37  fEventCut(0x0),
38  fCutOnSim(kFALSE),
39  fCutOnRec(kTRUE)
40 {
41   //ctor
42 }
43 /*********************************************************/
44
45 AliRunAnalysis::~AliRunAnalysis()
46 {
47   //dtor
48   delete fEventCut;
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  /******************************/ 
64  /*  Init Event                */ 
65  /******************************/ 
66  for (Int_t an = 0; an < fAnalysies.GetEntries(); an++)
67   {
68       AliAnalysis* analysis = (AliAnalysis*)fAnalysies.At(an);
69       analysis->Init();
70   }
71  
72  while (fReader->Next() == kFALSE)
73   {
74    AliAOD* eventsim = fReader->GetEventSim();
75    AliAOD* eventrec = fReader->GetEventRec();
76    
77       /******************************/ 
78       /*  Event Cut                 */ 
79       /******************************/ 
80       if ( Pass(eventrec,eventsim) )
81        {
82          if (AliVAODParticle::GetDebug()) Info("Run","Event rejected by Event Cut");
83          continue; //Did not pass the 
84        }
85       /******************************/ 
86       /*  Process Event             */ 
87       /******************************/ 
88       for (Int_t an = 0; an < fAnalysies.GetEntries(); an++)
89        {
90            AliAnalysis* analysis = (AliAnalysis*)fAnalysies.At(an);
91            analysis->ProcessEvent(eventrec,eventsim);
92        }
93     
94   }//end of loop over events
95
96  /******************************/ 
97  /*  Finish Event              */ 
98  /******************************/ 
99  for (Int_t an = 0; an < fAnalysies.GetEntries(); an++)
100   {
101       AliAnalysis* analysis = (AliAnalysis*)fAnalysies.At(an);
102       analysis->Finish();
103   }
104
105  return 0;   
106 }
107 /*********************************************************/
108
109 void  AliRunAnalysis::Add(AliAnalysis* a)
110 {
111   //adds a to the list of analysis
112   fAnalysies.Add(a);
113 }
114 /*********************************************************/
115
116 Bool_t AliRunAnalysis::Pass(AliAOD* recevent, AliAOD* simevent)
117 {
118   //checks the event cut
119   if (fEventCut == 0x0) return kFALSE;
120   
121   if (fCutOnRec)
122     if (fEventCut->Pass(recevent)) return kTRUE;
123     
124   if (fCutOnSim)
125     if (fEventCut->Pass(simevent)) return kTRUE;
126   
127   return kFALSE;
128 }