]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGLF/totEt/AliAnalysisTaskHadEt.cxx
B2 analysis code
[u/mrichter/AliRoot.git] / PWGLF / totEt / AliAnalysisTaskHadEt.cxx
CommitLineData
cf6522d1 1//_________________________________________________________________________
2// Utility Class for transverse energy studies; charged hadrons
3// Task for analysis
4// - reconstruction and MC output
5// implementation file
6//
7//Created by Christine Nattrass, Rebecca Scott, Irakli Martashvili
641e1e0c 8//University of Tennessee at Knoxville
cf6522d1 9//_________________________________________________________________________
7d2d1773 10//Necessary to read config macros
11#include <TROOT.h>
12#include <TSystem.h>
13#include <TInterpreter.h>
cf6522d1 14
641e1e0c 15#include "TChain.h"
cf6522d1 16#include "TList.h"
641e1e0c 17#include "TH2F.h"
641e1e0c 18
19#include "AliESDEvent.h"
641e1e0c 20#include "AliMCEvent.h"
cf6522d1 21#include "AliESDtrackCuts.h"
22
641e1e0c 23#include "AliAnalysisTaskHadEt.h"
cf6522d1 24#include "AliAnalysisHadEtReconstructed.h"
25#include "AliAnalysisHadEtMonteCarlo.h"
2c0680a5 26#include "AliPWG0Helper.h"
d35312c9 27#include "AliTriggerAnalysis.h"
641e1e0c 28
29#include <iostream>
6b246af1 30#include "AliLog.h"
641e1e0c 31
32using namespace std;
33
34ClassImp(AliAnalysisTaskHadEt)
35
36
37
38//________________________________________________________________________
bccadd89 39 AliAnalysisTaskHadEt::AliAnalysisTaskHadEt(const char *name, Bool_t isMc, TString recoConfigFile, TString mcConfigFile) :
d3d7bfe9 40 AliAnalysisTaskTransverseEnergy(name, isMc)
41 ,fRecAnalysis(0)
42 ,fMCAnalysis(0)
21ce38dd 43 ,fIsSim(isMc)
d35312c9 44 ,kIsOfflineV0AND(0)
ba222433 45 ,kIsOfflineMB(0)
641e1e0c 46{
47 // Constructor
bccadd89 48 fMCConfigFile = mcConfigFile;
49 fRecoConfigFile = recoConfigFile;
bccadd89 50
ea331c5d 51 if(fMCAnalysis) delete fMCAnalysis;
52 if(fRecAnalysis) delete fRecAnalysis;
53
49b25059 54 if (fRecoConfigFile.Length()) {
bccadd89 55 cout<<"Rereading AliAnalysisHadEtReconstructed configuration file "<<fRecoConfigFile<<endl;
49b25059 56 gROOT->LoadMacro(fRecoConfigFile);
57 fRecAnalysis = (AliAnalysisHadEtReconstructed *) gInterpreter->ProcessLine("ConfigHadEtReconstructed()");
58 }
59
d3d7bfe9 60 if (fMCConfigFile.Length()) {
bccadd89 61 cout<<"Rereading AliAnalysisHadEtMonteCarlo configuration file "<<fMCConfigFile<<endl;
d3d7bfe9 62 gROOT->LoadMacro(fMCConfigFile);
7d2d1773 63 fMCAnalysis = (AliAnalysisHadEtMonteCarlo *) gInterpreter->ProcessLine("ConfigHadEtMonteCarlo()");
49b25059 64 fMCAnalysis->SetHadEtReconstructed(fRecAnalysis);
7d2d1773 65 }
641e1e0c 66
67 // Define input and output slots here
68 // Input slot #0 works with a TChain
69 DefineInput(0, TChain::Class());
70 // Output slot #1 writes into a TH1 container
71
72 DefineOutput(1, TList::Class());
641e1e0c 73}
464aa50c 74AliAnalysisTaskHadEt::~AliAnalysisTaskHadEt(){//Destructor
951efd81 75 delete fRecAnalysis;
76 delete fMCAnalysis;
951efd81 77}
641e1e0c 78
79
80//________________________________________________________________________
81void AliAnalysisTaskHadEt::UserCreateOutputObjects()
82{
83 // Create histograms
bccadd89 84
641e1e0c 85 // Called once
bccadd89 86
87
88
641e1e0c 89 fOutputList = new TList;
951efd81 90 fOutputList->SetOwner();
641e1e0c 91 fMCAnalysis->SetHistoList(fOutputList);
92 fRecAnalysis->SetHistoList(fOutputList);
21ce38dd 93 if(fIsSim) fMCAnalysis->CreateHistograms();
641e1e0c 94 fRecAnalysis->CreateHistograms();
641e1e0c 95
9845dc2c 96
964c8159 97 if(fRecAnalysis->DataSet() != fMCAnalysis->DataSet()){
98 cout<<"Warning: Reconstruction data set and Monte Carlo data set are not the same! Setting data set to "<<fRecAnalysis->DataSet()<<endl;
99 }
641e1e0c 100
964c8159 101 Bool_t selectPrimaries=kTRUE;
ea331c5d 102 if(fEsdtrackCutsITSTPC) delete fEsdtrackCutsITSTPC;
103 if(fEsdtrackCutsITS) delete fEsdtrackCutsITS;
104 if(fEsdtrackCutsTPC) delete fEsdtrackCutsTPC;
5c66cc7a 105 //We do not use these because we are using the 2010 900 GeV data
106// if(fRecAnalysis->DataSet()==2009){
107// cout<<"Setting track cuts for the 2009 p+p collisions at 900 GeV"<<endl;
108// fEsdtrackCutsITSTPC = AliESDtrackCuts::GetStandardITSTPCTrackCuts2009(selectPrimaries);
109// fEsdtrackCutsITSTPC->SetName("fEsdTrackCuts");
110// fEsdtrackCutsTPC = AliESDtrackCuts::GetStandardTPCOnlyTrackCuts();
111// fEsdtrackCutsTPC->SetName("fEsdTrackCutsTPCOnly");
112// //ITS stand alone cuts - similar to 2009 cuts but with only ITS hits required
113// fEsdtrackCutsITS = AliESDtrackCuts::GetStandardITSPureSATrackCuts2009(kTRUE,kFALSE);//we do want primaries but we do not want to require PID info
114// fEsdtrackCutsITS->SetName("fEsdTrackCutsITS");
115// }
116 if(fRecAnalysis->DataSet()==2010 || fRecAnalysis->DataSet()==20111||fRecAnalysis->DataSet()==2009){
43809680 117 // AliAnalysisTaskSE:: SelectCollisionCandidates(AliVEvent::kINT7 ) ;
bccadd89 118 if(fRecAnalysis->DataSet()==2010)cout<<"Setting track cuts for the 2010 p+p collisions at 7 TeV"<<endl;
fbcb7701 119 else{
120 if(fRecAnalysis->DataSet()==2009){cout<<"Setting track cuts for the 2010 p+p collisions at 900 GeV"<<endl;}
121 else{cout<<"Setting track cuts for the 2011 p+p collisions at 2.76 TeV"<<endl;}
122 }
4bb44829 123 //cout<<"Warning: Have not set 2010 track cuts yet!!"<<endl;
964c8159 124 fEsdtrackCutsITSTPC = AliESDtrackCuts::GetStandardITSTPCTrackCuts2010(selectPrimaries);
125 fEsdtrackCutsITSTPC->SetName("fEsdTrackCuts");
126 fEsdtrackCutsTPC = AliESDtrackCuts::GetStandardTPCOnlyTrackCuts();
127 fEsdtrackCutsTPC->SetName("fEsdTrackCutsTPCOnly");
128 //ITS stand alone cuts - similar to 2009 cuts but with only ITS hits required
a719cc37 129 fEsdtrackCutsITS = AliESDtrackCuts::GetStandardITSSATrackCuts2010(kTRUE,kFALSE);//we do want primaries but we do not want to require PID info
964c8159 130 fEsdtrackCutsITS->SetName("fEsdTrackCutsITS");
131 }
49b25059 132 if(fRecAnalysis->DataSet()==20100){
133 cout<<"Setting track cuts for the 2010 Pb+Pb collisions at 2.76 TeV"<<endl;
134 //cout<<"Warning: Have not set 2010 track cuts yet!!"<<endl;
135 fEsdtrackCutsITSTPC = AliESDtrackCuts::GetStandardITSTPCTrackCuts2010(selectPrimaries);
136 fEsdtrackCutsITSTPC->SetName("fEsdTrackCuts");
137 fEsdtrackCutsTPC = AliESDtrackCuts::GetStandardTPCOnlyTrackCuts();
138 fEsdtrackCutsTPC->SetName("fEsdTrackCutsTPCOnly");
139 //ITS stand alone cuts - similar to 2009 cuts but with only ITS hits required
140 fEsdtrackCutsITS = AliESDtrackCuts::GetStandardITSSATrackCutsPbPb2010(kTRUE,kFALSE);//we do want primaries but we do not want to require PID info
5c66cc7a 141 // fEsdtrackCutsITS = AliESDtrackCuts::GetStandardITSPureSATrackCuts2010(kTRUE,kFALSE);//we do want primaries but we do not want to require PID info
142 fEsdtrackCutsITS->SetName("fEsdTrackCutsITS");
49b25059 143 }
cf6522d1 144
964c8159 145 fOutputList->Add(fEsdtrackCutsITSTPC);
146 fOutputList->Add(fEsdtrackCutsTPC);
147 fOutputList->Add(fEsdtrackCutsITS);
148 if(fEsdtrackCutsITSTPC && fEsdtrackCutsTPC){
149 fRecAnalysis->SetITSTrackCuts( GetITSTrackCuts());
150 fMCAnalysis->SetITSTrackCuts( GetITSTrackCuts());
151 fRecAnalysis->SetTPCITSTrackCuts( GetTPCITSTrackCuts());
152 fMCAnalysis->SetTPCITSTrackCuts( GetTPCITSTrackCuts());
153 fRecAnalysis->SetTPCOnlyTrackCuts( GetTPCOnlyTrackCuts());
154 fMCAnalysis->SetTPCOnlyTrackCuts( GetTPCOnlyTrackCuts());
155 //add ITS stuff!
156 }
157 else{
158 Printf("Error: no track cuts!");
159 }
19ec7ce2 160
161 PostData(1, fOutputList);
641e1e0c 162}
163
164//________________________________________________________________________
165void AliAnalysisTaskHadEt::UserExec(Option_t *)
cf6522d1 166{ // execute method
d3d7bfe9 167 fESDEvent = dynamic_cast<AliESDEvent*>(InputEvent());
168if (!fESDEvent) {
641e1e0c 169 Printf("ERROR: Could not retrieve event");
170 return;
171 }
2c0680a5 172//cout<<"AliAnalysisTaskHadEt 165"<<endl;
7d2d1773 173
e50ad0d0 174//Int_t res = CheckPhysicsSelection(fESDEvent->GetRunNumber()); // Check if the physics selection is valid for this run
d3d7bfe9 175
b1a5cb85 176//AliCentrality *cent = GetCentralityObject();
641e1e0c 177
1794f02f 178//if(res == 0 && cent){
179//if(cent){
d35312c9 180 AliTriggerAnalysis *fTriggerAnalysis = new AliTriggerAnalysis();
181
182 kIsOfflineV0AND = fTriggerAnalysis->IsOfflineTriggerFired(fESDEvent, AliTriggerAnalysis::kV0AND);
ba222433 183 kIsOfflineMB = fTriggerAnalysis->IsOfflineTriggerFired(fESDEvent, AliTriggerAnalysis::kMB1);
d35312c9 184 fRecAnalysis->SetIsOfflineV0AND(kIsOfflineV0AND);
185 fMCAnalysis->SetIsOfflineV0AND(kIsOfflineV0AND);
ba222433 186 fMCAnalysis->SetIsOfflineMB(kIsOfflineMB);
a719cc37 187
1794f02f 188 Int_t eventtype = AliPWG0Helper::kInvalidProcess;
5c3c2341 189 if(fIsSim && fRecAnalysis->DataSet()!=20100) eventtype = (Int_t) AliPWG0Helper::GetEventProcessType(MCEvent()->Header());
a719cc37 190 fRecAnalysis->AnalyseEvent(fESDEvent,eventtype);
191 if(fIsSim){
1794f02f 192 AliMCEvent* mcEvent = MCEvent();
193 if(!mcEvent){
194 AliFatal("ERROR: MC Event does not exist");
195 return;
196 }
1794f02f 197 if (fESDEvent){
198 ((AliAnalysisHadEtMonteCarlo*)fMCAnalysis)->AnalyseEvent((AliVEvent*)mcEvent,(AliVEvent*)fESDEvent);
6b246af1 199
a719cc37 200 if( fRecAnalysis->DataSet()==20100 || AliPWG0Helper::GetEventProcessType(mcEvent->Header()) == AliPWG0Helper::kND){//either non-diffractive or Pb+Pb
d3d7bfe9 201 if(fMCAnalysis->Full()){
202 fMCAnalysis->FillSimTotEtMinusRecoTotEtFullAcceptanceTPC( fRecAnalysis->GetCorrectedTotEtFullAcceptanceTPC() );
203 fMCAnalysis->FillSimTotEtMinusRecoTotEtFullAcceptanceITS( fRecAnalysis->GetCorrectedTotEtFullAcceptanceITS() );
204 fMCAnalysis->FillSimTotEtMinusRecoTotEtFullAcceptanceTPCNoPID( fRecAnalysis->GetCorrectedTotEtFullAcceptanceTPCNoPID() );
205 fMCAnalysis->FillSimTotEtMinusRecoTotEtFullAcceptanceITSNoPID( fRecAnalysis->GetCorrectedTotEtFullAcceptanceITSNoPID() );
206 fMCAnalysis->FillSimHadEtMinusRecoHadEtFullAcceptanceTPC( fRecAnalysis->GetCorrectedHadEtFullAcceptanceTPC() );
207 fMCAnalysis->FillSimHadEtMinusRecoHadEtFullAcceptanceITS( fRecAnalysis->GetCorrectedHadEtFullAcceptanceITS() );
208 fMCAnalysis->FillSimHadEtMinusRecoHadEtFullAcceptanceTPCNoPID( fRecAnalysis->GetCorrectedHadEtFullAcceptanceTPCNoPID() );
209 fMCAnalysis->FillSimHadEtMinusRecoHadEtFullAcceptanceITSNoPID( fRecAnalysis->GetCorrectedHadEtFullAcceptanceITSNoPID() );
6b246af1 210
211 fMCAnalysis->FillSimTotEtVsRecoTotEtFullAcceptanceTPC( fRecAnalysis->GetCorrectedTotEtFullAcceptanceTPC() );
212 fMCAnalysis->FillSimTotEtVsRecoTotEtFullAcceptanceITS( fRecAnalysis->GetCorrectedTotEtFullAcceptanceITS() );
213 fMCAnalysis->FillSimTotEtVsRecoTotEtFullAcceptanceTPCNoPID( fRecAnalysis->GetCorrectedTotEtFullAcceptanceTPCNoPID() );
214 fMCAnalysis->FillSimTotEtVsRecoTotEtFullAcceptanceITSNoPID( fRecAnalysis->GetCorrectedTotEtFullAcceptanceITSNoPID() );
215 fMCAnalysis->FillSimHadEtVsRecoHadEtFullAcceptanceTPC( fRecAnalysis->GetCorrectedHadEtFullAcceptanceTPC() );
216 fMCAnalysis->FillSimHadEtVsRecoHadEtFullAcceptanceITS( fRecAnalysis->GetCorrectedHadEtFullAcceptanceITS() );
217 fMCAnalysis->FillSimHadEtVsRecoHadEtFullAcceptanceTPCNoPID( fRecAnalysis->GetCorrectedHadEtFullAcceptanceTPCNoPID() );
218 fMCAnalysis->FillSimHadEtVsRecoHadEtFullAcceptanceITSNoPID( fRecAnalysis->GetCorrectedHadEtFullAcceptanceITSNoPID() );
62346fc2 219
220 fMCAnalysis->FillSimPiKPEtVsRecoPiKPEtFullAcceptanceTPC( fRecAnalysis->GetCorrectedPiKPEtFullAcceptanceTPC() );
221 fMCAnalysis->FillSimPiKPEtVsRecoPiKPEtFullAcceptanceITS( fRecAnalysis->GetCorrectedPiKPEtFullAcceptanceITS() );
222 fMCAnalysis->FillSimPiKPEtVsRecoPiKPEtFullAcceptanceTPCNoPID( fRecAnalysis->GetCorrectedPiKPEtFullAcceptanceTPCNoPID() );
223 fMCAnalysis->FillSimPiKPEtVsRecoPiKPEtFullAcceptanceITSNoPID( fRecAnalysis->GetCorrectedPiKPEtFullAcceptanceITSNoPID() );//Had
d3d7bfe9 224 }
225 if(fMCAnalysis->EMCAL()){
226 fMCAnalysis->FillSimTotEtMinusRecoTotEtEMCALAcceptanceTPC( fRecAnalysis->GetCorrectedTotEtEMCALAcceptanceTPC() );
227 fMCAnalysis->FillSimTotEtMinusRecoTotEtEMCALAcceptanceITS( fRecAnalysis->GetCorrectedTotEtEMCALAcceptanceITS() );
228 fMCAnalysis->FillSimTotEtMinusRecoTotEtEMCALAcceptanceTPCNoPID( fRecAnalysis->GetCorrectedTotEtEMCALAcceptanceTPCNoPID() );
229 fMCAnalysis->FillSimTotEtMinusRecoTotEtEMCALAcceptanceITSNoPID( fRecAnalysis->GetCorrectedTotEtEMCALAcceptanceITSNoPID() );
230 fMCAnalysis->FillSimHadEtMinusRecoHadEtEMCALAcceptanceTPC( fRecAnalysis->GetCorrectedHadEtEMCALAcceptanceTPC() );
231 fMCAnalysis->FillSimHadEtMinusRecoHadEtEMCALAcceptanceITS( fRecAnalysis->GetCorrectedHadEtEMCALAcceptanceITS() );
232 fMCAnalysis->FillSimHadEtMinusRecoHadEtEMCALAcceptanceTPCNoPID( fRecAnalysis->GetCorrectedHadEtEMCALAcceptanceTPCNoPID() );
233 fMCAnalysis->FillSimHadEtMinusRecoHadEtEMCALAcceptanceITSNoPID( fRecAnalysis->GetCorrectedHadEtEMCALAcceptanceITSNoPID() );
234 }
235 if(fMCAnalysis->PHOS()){
236 fMCAnalysis->FillSimTotEtMinusRecoTotEtPHOSAcceptanceTPC( fRecAnalysis->GetCorrectedTotEtPHOSAcceptanceTPC() );
237 fMCAnalysis->FillSimTotEtMinusRecoTotEtPHOSAcceptanceITS( fRecAnalysis->GetCorrectedTotEtPHOSAcceptanceITS() );
238 fMCAnalysis->FillSimTotEtMinusRecoTotEtPHOSAcceptanceTPCNoPID( fRecAnalysis->GetCorrectedTotEtPHOSAcceptanceTPCNoPID() );
239 fMCAnalysis->FillSimTotEtMinusRecoTotEtPHOSAcceptanceITSNoPID( fRecAnalysis->GetCorrectedTotEtPHOSAcceptanceITSNoPID() );
240 fMCAnalysis->FillSimHadEtMinusRecoHadEtPHOSAcceptanceTPC( fRecAnalysis->GetCorrectedHadEtPHOSAcceptanceTPC() );
241 fMCAnalysis->FillSimHadEtMinusRecoHadEtPHOSAcceptanceITS( fRecAnalysis->GetCorrectedHadEtPHOSAcceptanceITS() );
242 fMCAnalysis->FillSimHadEtMinusRecoHadEtPHOSAcceptanceTPCNoPID( fRecAnalysis->GetCorrectedHadEtPHOSAcceptanceTPCNoPID() );
243 fMCAnalysis->FillSimHadEtMinusRecoHadEtPHOSAcceptanceITSNoPID( fRecAnalysis->GetCorrectedHadEtPHOSAcceptanceITSNoPID() );
244 }
245 if(fMCAnalysis->PiKP() && fMCAnalysis->Full()){
246 fMCAnalysis->FillSimPiKPMinusRecoPiKPFullAcceptanceTPC(fRecAnalysis->GetCorrectedPiKPEtFullAcceptanceTPC());
247 fMCAnalysis->FillSimPiKPMinusRecoPiKPFullAcceptanceITS(fRecAnalysis->GetCorrectedPiKPEtFullAcceptanceITS());
248 fMCAnalysis->FillSimPiKPMinusRecoPiKPFullAcceptanceTPCNoPID(fRecAnalysis->GetCorrectedPiKPEtFullAcceptanceTPCNoPID());
249 fMCAnalysis->FillSimPiKPMinusRecoPiKPFullAcceptanceITSNoPID(fRecAnalysis->GetCorrectedPiKPEtFullAcceptanceITSNoPID());
250 }
7d2d1773 251 }
641e1e0c 252 }
1794f02f 253 }
d35312c9 254 delete fTriggerAnalysis;
1794f02f 255 //}
49b25059 256//cout<<"End Event"<<endl<<endl;
641e1e0c 257// Post output data.
6b246af1 258 PostData(1, fOutputList);
641e1e0c 259}
260
261//________________________________________________________________________
262void AliAnalysisTaskHadEt::Terminate(Option_t *)
263{
264 // Draw result to the screen
265 // Called once at the end of the query
266
267 fOutputList = dynamic_cast<TList*> (GetOutputData(1));
268 if (!fOutputList) {
269 printf("ERROR: Output list not available\n");
270 return;
271 }
272}
273
274