]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG2/FORWARD/analysis/AliFMDAnalysisTaskSE.cxx
9cdae7ec7a80c95ef12804040fa9931794e4e016
[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   
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   
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*)dNdetalist3->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
163 //_____________________________________________________________________
164 void AliFMDAnalysisTaskSE::Print(Option_t* option) const
165 {
166   AliInfo(Form("FMD Single Event Analysis Task\n"
167                "Parameters set to %p", fParams));
168   TString opt(option);
169   opt.ToLower();
170   if (opt.Contains("s")) { 
171     fSharing.Print(option);     
172     fDensity.Print(option);     
173     fBackground.Print(option);  
174     fDndeta.Print(option); 
175     fBFCorrelation.Print(option); 
176   }
177   if (opt.Contains("p") && fParams) 
178     fParams->Print(option);      
179 }
180
181 //_____________________________________________________________________
182 //
183 // EOF
184 //