]>
Commit | Line | Data |
---|---|---|
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* 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 | ||
111 | void AliRunAnalysis::Add(AliAnalysis* a) | |
112 | { | |
113 | //adds a to the list of analysis | |
114 | fAnalysies.Add(a); | |
115 | } | |
116 | /*********************************************************/ | |
117 | ||
118 | void 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 | ||
128 | Bool_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 | } |