]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG2/FORWARD/analysis/AliFMDAnalysisTaskSE.cxx
Fixing problems wrt the analysis train, bugs 67193 and 67223
[u/mrichter/AliRoot.git] / PWG2 / FORWARD / analysis / AliFMDAnalysisTaskSE.cxx
1 #include "AliFMDAnalysisTaskSE.h"
2 #include "AliESDEvent.h"
3 #include "iostream"
4 #include "AliESDFMD.h"
5 #include "AliMCEventHandler.h"
6 #include "AliAnalysisManager.h"
7 #include "AliFMDAnaParameters.h"
8 #include "AliLog.h"
9 #include "AliFMDDndeta.h"
10 #include "TDirectory.h"
11 ClassImp(AliFMDAnalysisTaskSE)
12
13 //_____________________________________________________________________
14 AliFMDAnalysisTaskSE::AliFMDAnalysisTaskSE():
15 AliAnalysisTaskSE(),
16   fListOfHistos(0),
17   fSharing("Sharing",kFALSE),
18   fDensity("Density",kFALSE),
19   fBackground("BackgroundCorrected",kFALSE),
20   fDndeta("dNdeta",kFALSE), 
21   fBFCorrelation("BFCorrelation",kFALSE), 
22   fParams(0)
23 {
24   // Default constructor
25 }
26 //_____________________________________________________________________
27 AliFMDAnalysisTaskSE::AliFMDAnalysisTaskSE(const char* name):
28   AliAnalysisTaskSE(name),
29   fListOfHistos(0),
30   fSharing("Sharing",kFALSE),
31   fDensity("Density",kFALSE),
32   fBackground("BackgroundCorrected",kFALSE),
33   fDndeta("dNdeta",kFALSE), 
34   fBFCorrelation("BFCorrelation",kFALSE), 
35   fParams(0)
36 {
37   SetParams(AliFMDAnaParameters::Instance());
38   DefineOutput(1, TList::Class());
39 }
40 //_____________________________________________________________________
41 void AliFMDAnalysisTaskSE::UserCreateOutputObjects()
42 {
43 // Create the output containers
44 //
45   fListOfHistos = new TList();
46   
47   AliESDFMD* fmd = new AliESDFMD();
48   AliESDVertex* vertex = new AliESDVertex();
49   
50   TList* densitylist = new TList();
51   
52   TList* bgcorlist = new TList();
53   
54   fSharing.SetFMDData(fmd);
55   fSharing.SetVertex(vertex);
56   fSharing.SetOutputList(fListOfHistos);
57   
58   fDensity.Init();
59   fDensity.SetOutputList(densitylist);
60   fDensity.SetInputESDFMD(fmd) ;
61   fDensity.SetInputVertex(vertex);
62   
63   fBackground.SetInputList(densitylist);
64   fBackground.SetOutputList(bgcorlist);
65   fBackground.SetHitList(fListOfHistos);
66
67   fDndeta.SetInputList(bgcorlist); 
68   fDndeta.SetOutputList(fListOfHistos); 
69   fBFCorrelation.SetInputList(bgcorlist); 
70   fBFCorrelation.SetOutputList(fListOfHistos); 
71   
72   fSharing.CreateOutputObjects();
73   fDensity.CreateOutputObjects();
74   fBackground.CreateOutputObjects();
75   fDndeta.CreateOutputObjects();
76   fBFCorrelation.CreateOutputObjects();
77   
78   PostData(1, fListOfHistos);
79 }
80 //_____________________________________________________________________
81 void AliFMDAnalysisTaskSE::Init()
82 {
83   std::cout<<"Init"<<std::endl;
84 }
85 //_____________________________________________________________________
86 void AliFMDAnalysisTaskSE::UserExec(Option_t */*option*/)
87 {
88   // Execute analysis for current event
89   //
90   
91   //AliFMDAnaParameters* pars = AliFMDAnaParameters::Instance();
92   
93   
94   AliESDEvent* fESD = (AliESDEvent*)InputEvent();
95   //std::cout<<fESD->GetBeamEnergy()<<"   "<<fESD->GetBeamType()<<"    "<<fESD->GetCurrentL3()<<std::endl;
96   fSharing.SetInputESD(fESD);
97   
98   fSharing.Exec("");
99   if(fSharing.GetEventStatus()) {
100     fDensity.Exec("");
101     if(fDensity.GetEventStatus()) {
102       fBackground.Exec("");  
103       fDndeta.Exec("");
104       fBFCorrelation.Exec("");
105     }
106     else return;
107   }
108   else return;
109   
110   PostData(1, fListOfHistos);
111   
112   //fListOfHistos = fBackground.GetOutputList();
113   
114  
115 }
116 //_____________________________________________________________________
117 void AliFMDAnalysisTaskSE::Terminate(Option_t */*option*/)
118 {
119   
120   TList* outputList = (TList*)GetOutputData(1);
121   
122   if(outputList) {
123     fSharing.SetOutputList(outputList);
124     fBackground.SetHitList(outputList);
125     fDndeta.SetOutputList(outputList); 
126     fBFCorrelation.SetOutputList(outputList); 
127     fSharing.Terminate("");
128     fBackground.Terminate("");
129     fDndeta.Terminate("");
130     fBFCorrelation.Terminate("");
131     
132     AliFMDDndeta t;
133     t.SetNbinsToCut(2);
134     t.Init(outputList);
135     t.GenerateMult(AliFMDDndeta::kMult);
136     
137     TList* dNdetalist = t.GetMultList(AliFMDDndeta::kMult);
138     TList* cloneList = (TList*)dNdetalist->Clone("dNdeta");
139     cloneList->SetName("dNdeta");
140     outputList->Add(cloneList);
141     
142     t.GenerateMult(AliFMDDndeta::kMultTrVtx);
143     TList* dNdetalist2 = t.GetMultList(AliFMDDndeta::kMultTrVtx);
144     TList* cloneList2 = (TList*)dNdetalist2->Clone("dNdetaTrVtx");
145     cloneList2->SetName("dNdetaTrVtx");
146     outputList->Add(cloneList2);
147   
148     t.GenerateMult(AliFMDDndeta::kHits);
149     TList* dNdetalist3 = t.GetMultList(AliFMDDndeta::kHits);
150     TList* cloneList3 = (TList*)dNdetalist3->Clone("Hits");
151     cloneList3->SetName("Hits");
152     outputList->Add(cloneList3);
153     t.GenerateMult(AliFMDDndeta::kHitsTrVtx);
154     TList* dNdetalist4 = t.GetMultList(AliFMDDndeta::kHits);
155     TList* cloneList4 = (TList*)dNdetalist4->Clone("HitsTrVtx");
156     cloneList4->SetName("HitsTrVtx");
157     outputList->Add(cloneList4);
158     // TFile file("fmd_ana_histos_tmp.root","RECREATE");
159     //  fListOfHistos->Write();
160     // file.Close();
161   }
162   else
163     AliWarning("no merged output from manager");
164   
165   
166 }
167
168 //_____________________________________________________________________
169 void AliFMDAnalysisTaskSE::Print(Option_t* option) const
170 {
171   AliInfo(Form("FMD Single Event Analysis Task\n"
172                "Parameters set to %p", fParams));
173   TString opt(option);
174   opt.ToLower();
175   if (opt.Contains("s")) { 
176     fSharing.Print(option);     
177     fDensity.Print(option);     
178     fBackground.Print(option);  
179     fDndeta.Print(option); 
180     fBFCorrelation.Print(option); 
181   }
182   if (opt.Contains("p") && fParams) 
183     fParams->Print(option);      
184 }
185
186 //_____________________________________________________________________
187 //
188 // EOF
189 //