]> git.uio.no Git - u/mrichter/AliRoot.git/blame_incremental - ANALYSIS/AliRunAnalysis.cxx
Additional safety check introduced
[u/mrichter/AliRoot.git] / ANALYSIS / AliRunAnalysis.cxx
... / ...
CommitLineData
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
34ClassImp(AliRunAnalysis)
35AliRunAnalysis::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
46AliRunAnalysis::~AliRunAnalysis()
47{
48 //dtor
49 delete fReader;
50 delete fEventCut;
51}
52/*********************************************************/
53
54Int_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* eventsim = fReader->GetEventSim();
76 AliAOD* eventrec = fReader->GetEventRec();
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 for (Int_t an = 0; an < fAnalysies.GetEntries(); an++)
90 {
91 AliAnalysis* analysis = (AliAnalysis*)fAnalysies.At(an);
92 analysis->ProcessEvent(eventrec,eventsim);
93 }
94
95 }//end of loop over events
96
97 /******************************/
98 /* Finish Event */
99 /******************************/
100 if (cwd) cwd->cd();
101 for (Int_t an = 0; an < fAnalysies.GetEntries(); an++)
102 {
103 AliAnalysis* analysis = (AliAnalysis*)fAnalysies.At(an);
104 analysis->Finish();
105 }
106
107 return 0;
108}
109/*********************************************************/
110
111void AliRunAnalysis::Add(AliAnalysis* a)
112{
113 //adds a to the list of analysis
114 fAnalysies.Add(a);
115}
116/*********************************************************/
117
118void AliRunAnalysis::SetEventCut(AliEventCut* evcut)
119{
120//Sets event - makes a private copy
121 delete fEventCut;
122 if (evcut) fEventCut = (AliEventCut*)evcut->Clone();
123 else fEventCut = 0x0;
124}
125
126/*********************************************************/
127
128Bool_t AliRunAnalysis::Rejected(AliAOD* recevent, AliAOD* simevent)
129{
130 //checks the event cut
131 if (fEventCut == 0x0) return kFALSE;
132
133 if (fCutOnRec)
134 if (fEventCut->Rejected(recevent)) return kTRUE;
135
136 if (fCutOnSim)
137 if (fEventCut->Rejected(simevent)) return kTRUE;
138
139 return kFALSE;
140}