]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG4/totEt/AliAnalysisTaskHadEt.cxx
Script to draw occupancies
[u/mrichter/AliRoot.git] / PWG4 / totEt / AliAnalysisTaskHadEt.cxx
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
8 //University of Tennessee at Knoxville
9 //_________________________________________________________________________
10 //Necessary to read config macros
11 #include <TROOT.h>
12 #include <TSystem.h>
13 #include <TInterpreter.h>
14
15 #include "TChain.h"
16 #include "TList.h"
17 #include "TH2F.h"
18
19 #include "AliESDEvent.h"
20 #include "AliMCEvent.h"
21 #include "AliESDtrackCuts.h"
22
23 #include "AliAnalysisTaskHadEt.h"
24 #include "AliAnalysisHadEtReconstructed.h"
25 #include "AliAnalysisHadEtMonteCarlo.h"
26
27 #include <iostream>
28
29 using namespace std;
30
31 ClassImp(AliAnalysisTaskHadEt)
32
33
34
35 //________________________________________________________________________
36   AliAnalysisTaskHadEt::AliAnalysisTaskHadEt(const char *name, Bool_t isMc, TString recoConfigFile, TString mcConfigFile) :
37         AliAnalysisTaskTransverseEnergy(name, isMc)
38         ,fRecAnalysis(0)
39         ,fMCAnalysis(0)
40         ,fIsSim(isMc)
41 {
42     // Constructor
43   fMCConfigFile = mcConfigFile;
44   fRecoConfigFile = recoConfigFile;
45
46   if(fMCAnalysis) delete fMCAnalysis;
47   if(fRecAnalysis) delete fRecAnalysis;
48
49   if (fRecoConfigFile.Length()) {
50     cout<<"Rereading AliAnalysisHadEtReconstructed configuration file "<<fRecoConfigFile<<endl;
51     gROOT->LoadMacro(fRecoConfigFile);
52     fRecAnalysis = (AliAnalysisHadEtReconstructed *) gInterpreter->ProcessLine("ConfigHadEtReconstructed()");
53   }
54
55   if (fMCConfigFile.Length()) {
56     cout<<"Rereading AliAnalysisHadEtMonteCarlo configuration file "<<fMCConfigFile<<endl;
57     gROOT->LoadMacro(fMCConfigFile);
58     fMCAnalysis = (AliAnalysisHadEtMonteCarlo *) gInterpreter->ProcessLine("ConfigHadEtMonteCarlo()");
59     fMCAnalysis->SetHadEtReconstructed(fRecAnalysis);
60   }
61
62     // Define input and output slots here
63     // Input slot #0 works with a TChain
64     DefineInput(0, TChain::Class());
65     // Output slot #1 writes into a TH1 container
66
67     DefineOutput(1, TList::Class());
68 }
69 AliAnalysisTaskHadEt::~AliAnalysisTaskHadEt(){//Destructor
70   delete fRecAnalysis;
71   delete fMCAnalysis;
72 }
73
74
75 //________________________________________________________________________
76 void AliAnalysisTaskHadEt::UserCreateOutputObjects()
77 {
78     // Create histograms
79
80     // Called once
81
82
83
84   fOutputList = new TList;
85   fOutputList->SetOwner();
86   fMCAnalysis->SetHistoList(fOutputList);
87   fRecAnalysis->SetHistoList(fOutputList);
88   if(fIsSim) fMCAnalysis->CreateHistograms();
89   fRecAnalysis->CreateHistograms();
90
91
92   if(fRecAnalysis->DataSet() != fMCAnalysis->DataSet()){
93     cout<<"Warning: Reconstruction data set and Monte Carlo data set are not the same!  Setting data set to "<<fRecAnalysis->DataSet()<<endl;
94   }
95
96   Bool_t selectPrimaries=kTRUE;
97   if(fEsdtrackCutsITSTPC) delete fEsdtrackCutsITSTPC;
98   if(fEsdtrackCutsITS) delete fEsdtrackCutsITS;
99   if(fEsdtrackCutsTPC) delete fEsdtrackCutsTPC;
100   //We do not use these because we are using the 2010 900 GeV data
101 //   if(fRecAnalysis->DataSet()==2009){
102 //     cout<<"Setting track cuts for the 2009 p+p collisions at 900 GeV"<<endl;
103 //     fEsdtrackCutsITSTPC = AliESDtrackCuts::GetStandardITSTPCTrackCuts2009(selectPrimaries);
104 //     fEsdtrackCutsITSTPC->SetName("fEsdTrackCuts");
105 //     fEsdtrackCutsTPC = AliESDtrackCuts::GetStandardTPCOnlyTrackCuts();
106 //     fEsdtrackCutsTPC->SetName("fEsdTrackCutsTPCOnly");
107 //     //ITS stand alone cuts - similar to 2009 cuts but with only ITS hits required
108 //     fEsdtrackCutsITS =  AliESDtrackCuts::GetStandardITSPureSATrackCuts2009(kTRUE,kFALSE);//we do want primaries but we do not want to require PID info
109 //     fEsdtrackCutsITS->SetName("fEsdTrackCutsITS");
110 //   }
111   if(fRecAnalysis->DataSet()==2010 || fRecAnalysis->DataSet()==20111||fRecAnalysis->DataSet()==2009){
112     if(fRecAnalysis->DataSet()==2010)cout<<"Setting track cuts for the 2010 p+p collisions at 7 TeV"<<endl;
113     else{cout<<"Setting track cuts for the 2011 p+p collisions at 2.76 TeV"<<endl;}
114     //cout<<"Warning:  Have not set 2010 track cuts yet!!"<<endl;
115     fEsdtrackCutsITSTPC = AliESDtrackCuts::GetStandardITSTPCTrackCuts2010(selectPrimaries);
116     fEsdtrackCutsITSTPC->SetName("fEsdTrackCuts");
117     fEsdtrackCutsTPC = AliESDtrackCuts::GetStandardTPCOnlyTrackCuts();
118     fEsdtrackCutsTPC->SetName("fEsdTrackCutsTPCOnly");
119     //ITS stand alone cuts - similar to 2009 cuts but with only ITS hits required
120     fEsdtrackCutsITS =  AliESDtrackCuts::GetStandardITSPureSATrackCuts2010(kTRUE,kFALSE);//we do want primaries but we do not want to require PID info
121     fEsdtrackCutsITS->SetName("fEsdTrackCutsITS");
122   }
123   if(fRecAnalysis->DataSet()==20100){
124     cout<<"Setting track cuts for the 2010 Pb+Pb collisions at 2.76 TeV"<<endl;
125     //cout<<"Warning:  Have not set 2010 track cuts yet!!"<<endl;
126     fEsdtrackCutsITSTPC = AliESDtrackCuts::GetStandardITSTPCTrackCuts2010(selectPrimaries);
127     fEsdtrackCutsITSTPC->SetName("fEsdTrackCuts");
128     fEsdtrackCutsTPC = AliESDtrackCuts::GetStandardTPCOnlyTrackCuts();
129     fEsdtrackCutsTPC->SetName("fEsdTrackCutsTPCOnly");
130     //ITS stand alone cuts - similar to 2009 cuts but with only ITS hits required
131     fEsdtrackCutsITS =  AliESDtrackCuts::GetStandardITSSATrackCutsPbPb2010(kTRUE,kFALSE);//we do want primaries but we do not want to require PID info
132     // fEsdtrackCutsITS =  AliESDtrackCuts::GetStandardITSPureSATrackCuts2010(kTRUE,kFALSE);//we do want primaries but we do not want to require PID info
133    fEsdtrackCutsITS->SetName("fEsdTrackCutsITS");
134   }
135
136   fOutputList->Add(fEsdtrackCutsITSTPC);
137   fOutputList->Add(fEsdtrackCutsTPC);
138   fOutputList->Add(fEsdtrackCutsITS);
139   if(fEsdtrackCutsITSTPC && fEsdtrackCutsTPC){
140     fRecAnalysis->SetITSTrackCuts( GetITSTrackCuts());
141     fMCAnalysis->SetITSTrackCuts( GetITSTrackCuts());
142     fRecAnalysis->SetTPCITSTrackCuts( GetTPCITSTrackCuts());
143     fMCAnalysis->SetTPCITSTrackCuts( GetTPCITSTrackCuts());
144     fRecAnalysis->SetTPCOnlyTrackCuts( GetTPCOnlyTrackCuts());
145     fMCAnalysis->SetTPCOnlyTrackCuts( GetTPCOnlyTrackCuts());
146     //add ITS stuff!
147   }
148   else{
149     Printf("Error: no track cuts!");
150   }
151 }
152
153 //________________________________________________________________________
154 void AliAnalysisTaskHadEt::UserExec(Option_t *)
155 { // execute method
156   fESDEvent = dynamic_cast<AliESDEvent*>(InputEvent());
157 if (!fESDEvent) {
158   Printf("ERROR: Could not retrieve event");
159   return;
160  }
161 //cout<<"AliAnalysisHadEtReconstructed 90"<<endl;
162
163 Int_t res = CheckPhysicsSelection(fESDEvent->GetRunNumber()); // Check if the physics selection is valid for this run
164
165 AliCentrality *cent = GetCentralityObject();
166
167 if(res == 0 && cent){
168   
169   //cout<<"New Event"<<endl;  
170
171   fRecAnalysis->AnalyseEvent(fESDEvent);
172
173   AliMCEvent* mcEvent = MCEvent();
174 // if (!mcEvent) {
175 //   Printf("ERROR: Could not retrieve MC event");
176 //  }
177   if (mcEvent && fESDEvent && fIsSim){
178       ((AliAnalysisHadEtMonteCarlo*)fMCAnalysis)->AnalyseEvent((AliVEvent*)mcEvent,(AliVEvent*)fESDEvent);
179       if(fMCAnalysis->Full()){
180         fMCAnalysis->FillSimTotEtMinusRecoTotEtFullAcceptanceTPC( fRecAnalysis->GetCorrectedTotEtFullAcceptanceTPC() );
181         fMCAnalysis->FillSimTotEtMinusRecoTotEtFullAcceptanceITS( fRecAnalysis->GetCorrectedTotEtFullAcceptanceITS() );
182         fMCAnalysis->FillSimTotEtMinusRecoTotEtFullAcceptanceTPCNoPID( fRecAnalysis->GetCorrectedTotEtFullAcceptanceTPCNoPID() );
183         fMCAnalysis->FillSimTotEtMinusRecoTotEtFullAcceptanceITSNoPID( fRecAnalysis->GetCorrectedTotEtFullAcceptanceITSNoPID() );
184         fMCAnalysis->FillSimHadEtMinusRecoHadEtFullAcceptanceTPC( fRecAnalysis->GetCorrectedHadEtFullAcceptanceTPC() );
185         fMCAnalysis->FillSimHadEtMinusRecoHadEtFullAcceptanceITS( fRecAnalysis->GetCorrectedHadEtFullAcceptanceITS() );
186         fMCAnalysis->FillSimHadEtMinusRecoHadEtFullAcceptanceTPCNoPID( fRecAnalysis->GetCorrectedHadEtFullAcceptanceTPCNoPID() );
187         fMCAnalysis->FillSimHadEtMinusRecoHadEtFullAcceptanceITSNoPID( fRecAnalysis->GetCorrectedHadEtFullAcceptanceITSNoPID() );
188       }
189       if(fMCAnalysis->EMCAL()){
190         fMCAnalysis->FillSimTotEtMinusRecoTotEtEMCALAcceptanceTPC( fRecAnalysis->GetCorrectedTotEtEMCALAcceptanceTPC() );
191         fMCAnalysis->FillSimTotEtMinusRecoTotEtEMCALAcceptanceITS( fRecAnalysis->GetCorrectedTotEtEMCALAcceptanceITS() );
192         fMCAnalysis->FillSimTotEtMinusRecoTotEtEMCALAcceptanceTPCNoPID( fRecAnalysis->GetCorrectedTotEtEMCALAcceptanceTPCNoPID() );
193         fMCAnalysis->FillSimTotEtMinusRecoTotEtEMCALAcceptanceITSNoPID( fRecAnalysis->GetCorrectedTotEtEMCALAcceptanceITSNoPID() );
194         fMCAnalysis->FillSimHadEtMinusRecoHadEtEMCALAcceptanceTPC( fRecAnalysis->GetCorrectedHadEtEMCALAcceptanceTPC() );
195         fMCAnalysis->FillSimHadEtMinusRecoHadEtEMCALAcceptanceITS( fRecAnalysis->GetCorrectedHadEtEMCALAcceptanceITS() );
196         fMCAnalysis->FillSimHadEtMinusRecoHadEtEMCALAcceptanceTPCNoPID( fRecAnalysis->GetCorrectedHadEtEMCALAcceptanceTPCNoPID() );
197         fMCAnalysis->FillSimHadEtMinusRecoHadEtEMCALAcceptanceITSNoPID( fRecAnalysis->GetCorrectedHadEtEMCALAcceptanceITSNoPID() );
198       }
199       if(fMCAnalysis->PHOS()){
200         fMCAnalysis->FillSimTotEtMinusRecoTotEtPHOSAcceptanceTPC( fRecAnalysis->GetCorrectedTotEtPHOSAcceptanceTPC() );
201         fMCAnalysis->FillSimTotEtMinusRecoTotEtPHOSAcceptanceITS( fRecAnalysis->GetCorrectedTotEtPHOSAcceptanceITS() );
202         fMCAnalysis->FillSimTotEtMinusRecoTotEtPHOSAcceptanceTPCNoPID( fRecAnalysis->GetCorrectedTotEtPHOSAcceptanceTPCNoPID() );
203         fMCAnalysis->FillSimTotEtMinusRecoTotEtPHOSAcceptanceITSNoPID( fRecAnalysis->GetCorrectedTotEtPHOSAcceptanceITSNoPID() );
204         fMCAnalysis->FillSimHadEtMinusRecoHadEtPHOSAcceptanceTPC( fRecAnalysis->GetCorrectedHadEtPHOSAcceptanceTPC() );
205         fMCAnalysis->FillSimHadEtMinusRecoHadEtPHOSAcceptanceITS( fRecAnalysis->GetCorrectedHadEtPHOSAcceptanceITS() );
206         fMCAnalysis->FillSimHadEtMinusRecoHadEtPHOSAcceptanceTPCNoPID( fRecAnalysis->GetCorrectedHadEtPHOSAcceptanceTPCNoPID() );
207         fMCAnalysis->FillSimHadEtMinusRecoHadEtPHOSAcceptanceITSNoPID( fRecAnalysis->GetCorrectedHadEtPHOSAcceptanceITSNoPID() );
208       }
209       if(fMCAnalysis->PiKP() && fMCAnalysis->Full()){
210         fMCAnalysis->FillSimPiKPMinusRecoPiKPFullAcceptanceTPC(fRecAnalysis->GetCorrectedPiKPEtFullAcceptanceTPC());
211         fMCAnalysis->FillSimPiKPMinusRecoPiKPFullAcceptanceITS(fRecAnalysis->GetCorrectedPiKPEtFullAcceptanceITS());
212         fMCAnalysis->FillSimPiKPMinusRecoPiKPFullAcceptanceTPCNoPID(fRecAnalysis->GetCorrectedPiKPEtFullAcceptanceTPCNoPID());
213         fMCAnalysis->FillSimPiKPMinusRecoPiKPFullAcceptanceITSNoPID(fRecAnalysis->GetCorrectedPiKPEtFullAcceptanceITSNoPID());
214       }
215     }
216   }
217 //cout<<"End Event"<<endl<<endl;
218 // Post output data.
219 PostData(1, fOutputList);
220 }
221
222 //________________________________________________________________________
223 void AliAnalysisTaskHadEt::Terminate(Option_t *)
224 {
225     // Draw result to the screen
226     // Called once at the end of the query
227
228     fOutputList = dynamic_cast<TList*> (GetOutputData(1));
229     if (!fOutputList) {
230         printf("ERROR: Output list not available\n");
231         return;
232     }
233 }
234
235