]> git.uio.no Git - u/mrichter/AliRoot.git/blame - ANALYSIS/AliRunAnalysis.cxx
Typo
[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():
2c95548d 36 TTask("RunAnalysis","Alice Analysis Manager"),
37 fAnalysies(10),
a5556ea5 38 fReader(0x0),
b26900d0 39 fEventCut(0x0),
a5556ea5 40 fCutOnSim(kFALSE),
41 fCutOnRec(kTRUE)
b26900d0 42{
43 //ctor
44}
45/*********************************************************/
46
47AliRunAnalysis::~AliRunAnalysis()
48{
49 //dtor
a5556ea5 50 delete fReader;
b26900d0 51 delete fEventCut;
52}
53/*********************************************************/
54
55Int_t AliRunAnalysis::Run()
56{
57 //makes analysis
b26900d0 58
2c95548d 59 if (fReader == 0x0)
60 {
61 Error("Run","Reader is not set");
62 return 1;
63 }
64 TDirectory* cwd = gDirectory;
65 Int_t nanal = fAnalysies.GetEntries();
91d370ab 66 if (AliVAODParticle::GetDebug()) Info("Run","There is %d analysies",nanal);
b26900d0 67 /******************************/
68 /* Init Event */
69 /******************************/
2c95548d 70 if (AliVAODParticle::GetDebug()) Info("Run","Intializing analyses...");
71 for (Int_t an = 0; an < nanal; an++)
72 {
73 if (AliVAODParticle::GetDebug()) Info("Run","Intializing analysis %d", an);
a5556ea5 74 AliAnalysis* analysis = (AliAnalysis*)fAnalysies.At(an);
2c95548d 75 if (AliVAODParticle::GetDebug())
76 {
77 Info("Run","Intializing analysis %d address %#x", an, analysis);
78 Info("Run","Intializing analysis %d name %d", an, analysis->GetName());
79 Info("Run","Intializing analysis %d: Calling Init...", an);
80 }
b26900d0 81 analysis->Init();
2c95548d 82 if (AliVAODParticle::GetDebug()) Info("Run","Intializing analysis %d: Calling Init... Done");
b26900d0 83 }
2c95548d 84 if (AliVAODParticle::GetDebug()) Info("Run","Intializing analyses... Done.");
85
a5556ea5 86 while (fReader->Next() == kFALSE)
b26900d0 87 {
6e967bfd 88 AliAOD* eventrec = fReader->GetEventRec();
89 AliAOD* eventsim = fReader->GetEventSim();
90
91 /******************************/
92 /* Event Cut */
93 /******************************/
94 if ( Rejected(eventrec,eventsim) )
95 {
96 if (AliVAODParticle::GetDebug()) Info("Run","Event rejected by Event Cut");
97 continue; //Did not pass the
98 }
2c95548d 99
6e967bfd 100 /******************************/
101 /* Process Event */
102 /******************************/
d5d0d54c 103 if (AliVAODParticle::GetDebug()) Info("Run","There is %d analyses",fAnalysies.GetEntries());
2c95548d 104
6e967bfd 105 for (Int_t an = 0; an < fAnalysies.GetEntries(); an++)
106 {
107 AliAnalysis* analysis = (AliAnalysis*)fAnalysies.At(an);
108 analysis->ProcessEvent(eventrec,eventsim);
109 }
b26900d0 110
a5556ea5 111 }//end of loop over events
b26900d0 112
113 /******************************/
114 /* Finish Event */
115 /******************************/
2c95548d 116 if (AliVAODParticle::GetDebug()) Info("Run","Finishing analyses... ");
117 if (AliVAODParticle::GetDebug()) Info("Run","There is %d anlyses",fAnalysies.GetEntries());
9e5e23b5 118 if (cwd) cwd->cd();
a5556ea5 119 for (Int_t an = 0; an < fAnalysies.GetEntries(); an++)
b26900d0 120 {
2c95548d 121 if (AliVAODParticle::GetDebug()) Info("Run","Finishing analysis %d", an);
a5556ea5 122 AliAnalysis* analysis = (AliAnalysis*)fAnalysies.At(an);
2c95548d 123 if (AliVAODParticle::GetDebug())
124 {
125 Info("Run","Finishing analysis %d address %#x", an, analysis);
126 Info("Run","Finishing analysis %d name %d", an, analysis->GetName());
127 Info("Run","Finishing analysis %d: Calling Finish...",an);
128 }
a5556ea5 129 analysis->Finish();
2c95548d 130 if (AliVAODParticle::GetDebug()) Info("Run","Finishing analysis %d: Calling Finish... Done");
b26900d0 131 }
2c95548d 132 if (AliVAODParticle::GetDebug()) Info("Run","Finishing done");
b26900d0 133
134 return 0;
135}
136/*********************************************************/
137
a5556ea5 138void AliRunAnalysis::Add(AliAnalysis* a)
b26900d0 139{
a5556ea5 140 //adds a to the list of analysis
141 fAnalysies.Add(a);
b26900d0 142}
143/*********************************************************/
144
36715d31 145void AliRunAnalysis::SetEventCut(AliEventCut* evcut)
146{
147//Sets event - makes a private copy
148 delete fEventCut;
149 if (evcut) fEventCut = (AliEventCut*)evcut->Clone();
150 else fEventCut = 0x0;
151}
152
153/*********************************************************/
154
cea0a066 155Bool_t AliRunAnalysis::Rejected(AliAOD* recevent, AliAOD* simevent)
b26900d0 156{
a5556ea5 157 //checks the event cut
158 if (fEventCut == 0x0) return kFALSE;
159
160 if (fCutOnRec)
cea0a066 161 if (fEventCut->Rejected(recevent)) return kTRUE;
a5556ea5 162
163 if (fCutOnSim)
cea0a066 164 if (fEventCut->Rejected(simevent)) return kTRUE;
a5556ea5 165
166 return kFALSE;
b26900d0 167}