]> git.uio.no Git - u/mrichter/AliRoot.git/blame - ANALYSIS/AliRunAnalysis.cxx
Bug corrected
[u/mrichter/AliRoot.git] / ANALYSIS / AliRunAnalysis.cxx
CommitLineData
b26900d0 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
9e5e23b5 28
b26900d0 29#include "AliEventCut.h"
a5556ea5 30#include "AliReader.h"
afa8b37b 31#include "AliVAODParticle.h"
b26900d0 32
b26900d0 33
34ClassImp(AliRunAnalysis)
35AliRunAnalysis::AliRunAnalysis():
91757255 36 TTask("RunAnalysis","Alice Analysis Manager") ,
a5556ea5 37 fReader(0x0),
b26900d0 38 fEventCut(0x0),
a5556ea5 39 fCutOnSim(kFALSE),
40 fCutOnRec(kTRUE)
b26900d0 41{
42 //ctor
43}
44/*********************************************************/
45
46AliRunAnalysis::~AliRunAnalysis()
47{
48 //dtor
a5556ea5 49 delete fReader;
b26900d0 50 delete fEventCut;
51}
52/*********************************************************/
53
54Int_t AliRunAnalysis::Run()
55{
56 //makes analysis
b26900d0 57
a5556ea5 58 if (fReader == 0x0)
59 {
60 Error("Run","Reader is not set");
61 return 1;
62 }
9e5e23b5 63 TDirectory* cwd = gDirectory;
b26900d0 64 /******************************/
65 /* Init Event */
66 /******************************/
a5556ea5 67 for (Int_t an = 0; an < fAnalysies.GetEntries(); an++)
b26900d0 68 {
a5556ea5 69 AliAnalysis* analysis = (AliAnalysis*)fAnalysies.At(an);
b26900d0 70 analysis->Init();
71 }
a5556ea5 72
73 while (fReader->Next() == kFALSE)
b26900d0 74 {
6e967bfd 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 /******************************/
d5d0d54c 89 if (AliVAODParticle::GetDebug()) Info("Run","There is %d analyses",fAnalysies.GetEntries());
6e967bfd 90 for (Int_t an = 0; an < fAnalysies.GetEntries(); an++)
91 {
92 AliAnalysis* analysis = (AliAnalysis*)fAnalysies.At(an);
93 analysis->ProcessEvent(eventrec,eventsim);
94 }
b26900d0 95
a5556ea5 96 }//end of loop over events
b26900d0 97
98 /******************************/
99 /* Finish Event */
100 /******************************/
9e5e23b5 101 if (cwd) cwd->cd();
a5556ea5 102 for (Int_t an = 0; an < fAnalysies.GetEntries(); an++)
b26900d0 103 {
a5556ea5 104 AliAnalysis* analysis = (AliAnalysis*)fAnalysies.At(an);
105 analysis->Finish();
b26900d0 106 }
107
108 return 0;
109}
110/*********************************************************/
111
a5556ea5 112void AliRunAnalysis::Add(AliAnalysis* a)
b26900d0 113{
a5556ea5 114 //adds a to the list of analysis
115 fAnalysies.Add(a);
b26900d0 116}
117/*********************************************************/
118
36715d31 119void 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
cea0a066 129Bool_t AliRunAnalysis::Rejected(AliAOD* recevent, AliAOD* simevent)
b26900d0 130{
a5556ea5 131 //checks the event cut
132 if (fEventCut == 0x0) return kFALSE;
133
134 if (fCutOnRec)
cea0a066 135 if (fEventCut->Rejected(recevent)) return kTRUE;
a5556ea5 136
137 if (fCutOnSim)
cea0a066 138 if (fEventCut->Rejected(simevent)) return kTRUE;
a5556ea5 139
140 return kFALSE;
b26900d0 141}