]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGPP/ZDC/AliAnalysisTaskZDCpA.cxx
New QA tasks for p-A
[u/mrichter/AliRoot.git] / PWGPP / ZDC / AliAnalysisTaskZDCpA.cxx
CommitLineData
e78776f6 1/**************************************************************************
2 * Copyright(c) 1998-2008, ALICE Experiment at CERN, All rights reserved. *
3 * *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
6 * *
7 * Permission to use, copy, modify and distribute this software and its *
8 * documentation strictly for non-commercial purposes is hereby granted *
9 * without fee, provided that the above copyright notice appears in all *
10 * copies and that both the copyright notice and this permission notice *
11 * appear in the supporting documentation. The authors make no claims *
12 * about the suitability of this software for any purpose. It is *
13 * provided "as is" without express or implied warranty. *
14 **************************************************************************/
15
16/////////////////////////////////////////////////////////////
17// //
18// Class to analyze ZDC data //
19// //
20/////////////////////////////////////////////////////////////
21
22#include <TList.h>
23#include <TH2F.h>
24#include <TH1F.h>
25#include <TFile.h>
26#include <TString.h>
27
28#include "AliAnalysisManager.h"
29#include "AliInputEventHandler.h"
30#include "AliVEvent.h"
31#include "AliESD.h"
32#include "AliESDEvent.h"
33#include "AliESDHeader.h"
34#include "AliESDInputHandler.h"
35#include "AliESDZDC.h"
36#include "AliMultiplicity.h"
37#include "AliAODHandler.h"
38#include "AliAODEvent.h"
39#include "AliAODVertex.h"
40#include "AliAODMCHeader.h"
41#include "AliMCEventHandler.h"
42#include "AliMCEvent.h"
43#include "AliHeader.h"
44#include "AliAODMCParticle.h"
45#include "AliAnalysisTaskSE.h"
46#include "AliGenEventHeader.h"
47#include "AliGenHijingEventHeader.h"
48#include "AliPhysicsSelectionTask.h"
49#include "AliPhysicsSelection.h"
50#include "AliBackgroundSelection.h"
51#include "AliTriggerAnalysis.h"
52#include "AliCentrality.h"
53#include "AliAnalysisTaskZDCpA.h"
54
55ClassImp(AliAnalysisTaskZDCpA)
56
57
58//________________________________________________________________________
59AliAnalysisTaskZDCpA::AliAnalysisTaskZDCpA():
60 AliAnalysisTaskSE(),
61 fDebug(0),
62 fIsMCInput(kFALSE),
63 fOutput(0x0),
64 fhTDCZNSum(0x0),
65 fhTDCZNDiff(0x0),
66 fhZNCSpectrum(0x0),
67 fhZNASpectrum(0x0),
68 fhZPCSpectrum(0x0),
69 fhZPASpectrum(0x0),
70 fhZEM1Spectrum(0x0),
71 fhZEM2Spectrum(0x0),
72 fhZNCpmc(0x0),
73 fhZNApmc(0x0),
74 fhZPCpmc(0x0),
75 fhZPApmc(0x0),
76 fhZNCCentroid(0x0),
77 fhZNACentroid(0x0),
78 fhZNCemd(0x0),
79 fhZNAemd(0x0),
80 fhPMCZNCemd(0x0),
81 fhPMCZNAemd(0x0),
82 fDebunch(0x0)
83{
84 // Default constructor
85}
86
87//________________________________________________________________________
88AliAnalysisTaskZDCpA::AliAnalysisTaskZDCpA(const char *name):
89 AliAnalysisTaskSE(name),
90 fDebug(0),
91 fIsMCInput(kFALSE),
92 fOutput(0x0),
93 fhTDCZNSum(0x0),
94 fhTDCZNDiff(0x0),
95 fhZNCSpectrum(0x0),
96 fhZNASpectrum(0x0),
97 fhZPCSpectrum(0x0),
98 fhZPASpectrum(0x0),
99 fhZEM1Spectrum(0x0),
100 fhZEM2Spectrum(0x0),
101 fhZNCpmc(0x0),
102 fhZNApmc(0x0),
103 fhZPCpmc(0x0),
104 fhZPApmc(0x0),
105 fhZNCCentroid(0x0),
106 fhZNACentroid(0x0),
107 fhZNCemd(0x0),
108 fhZNAemd(0x0),
109 fhPMCZNCemd(0x0),
110 fhPMCZNAemd(0x0),
111 fDebunch(0x0)
112{
113 // Output slot #1 writes into a TList container
114 DefineOutput(1, TList::Class());
115
116}
117
118//________________________________________________________________________
119AliAnalysisTaskZDCpA& AliAnalysisTaskZDCpA::operator=(const AliAnalysisTaskZDCpA& c)
120{
121 //
122 // Assignment operator
123 //
124 if (this!=&c) {
125 AliAnalysisTaskSE::operator=(c);
126 }
127 return *this;
128}
129
130//________________________________________________________________________
131AliAnalysisTaskZDCpA::AliAnalysisTaskZDCpA(const AliAnalysisTaskZDCpA& ana):
132 AliAnalysisTaskSE(ana),
133 fDebug(ana.fDebug),
134 fIsMCInput(ana.fIsMCInput),
135 fOutput(ana.fOutput),
136 fhTDCZNSum(ana.fhTDCZNSum),
137 fhTDCZNDiff(ana.fhTDCZNDiff),
138 fhZNCSpectrum(ana.fhZNCSpectrum),
139 fhZNASpectrum(ana.fhZNASpectrum),
140 fhZPCSpectrum(ana.fhZPCSpectrum),
141 fhZPASpectrum(ana.fhZPASpectrum),
142 fhZEM1Spectrum(ana.fhZEM1Spectrum),
143 fhZEM2Spectrum(ana.fhZEM2Spectrum),
144 fhZNCpmc(ana.fhZNCpmc),
145 fhZNApmc(ana.fhZNApmc),
146 fhZPCpmc(ana.fhZPCpmc),
147 fhZPApmc(ana.fhZPApmc),
148 fhZNCCentroid(ana.fhZNCCentroid),
149 fhZNACentroid(ana.fhZNACentroid),
150 fhZNCemd(ana.fhZNCemd),
151 fhZNAemd(ana.fhZNAemd),
152 fhPMCZNCemd(ana.fhPMCZNCemd),
153 fhPMCZNAemd(ana.fhPMCZNAemd),
154 fDebunch(ana.fDebunch)
155{
156 //
157 // Copy Constructor
158 //
159}
160
161//________________________________________________________________________
162AliAnalysisTaskZDCpA::~AliAnalysisTaskZDCpA()
163{
164 // Destructor
165 if(fOutput && !AliAnalysisManager::GetAnalysisManager()->IsProofMode()){
166 delete fOutput; fOutput=0;
167 }
168
169}
170
171//________________________________________________________________________
172void AliAnalysisTaskZDCpA::UserCreateOutputObjects()
173{
174 // Create the output containers
175
176 fOutput = new TList;
177 fOutput->SetOwner();
178 //fOutput->SetName("output");
179
180 fhTDCZNSum = new TH1F("fhTDCZNSum","TDC_{ZNC}+TDC_{ZNA}",60,-30.,30.);
181 fhTDCZNSum->GetXaxis()->SetTitle("TDC_{ZNC}+TDC_{ZNA} (ns)");
182 fOutput->Add(fhTDCZNSum);
183
184 fhTDCZNDiff = new TH1F("fhTDCZNDiff","TDC_{ZNC}-TDC_{ZNA}",60,-30.,30.);
185 fhTDCZNDiff->GetXaxis()->SetTitle("TDC_{ZNC}-TDC_{ZNA} (ns)");
186 fOutput->Add(fhTDCZNDiff);
187
188 fhZNCSpectrum = new TH1F("fhZNCSpectrum", "ZNC signal", 200,0., 2000.);
189 fOutput->Add(fhZNCSpectrum);
190 fhZNASpectrum = new TH1F("fhZNASpectrum", "ZNA signal", 200,0., 2000.) ;
191 fOutput->Add(fhZNASpectrum);
192 fhZPCSpectrum = new TH1F("fhZPCSpectrum", "ZPC signal", 200,0., 2000.) ;
193 fOutput->Add(fhZPCSpectrum);
194 fhZPASpectrum = new TH1F("fhZPASpectrum", "ZPA signal", 200,0., 2000.) ;
195 fOutput->Add(fhZPASpectrum);
196 fhZEM1Spectrum = new TH1F("fhZEM1Spectrum", "ZEM1 signal", 100,0., 2000.);
197 fOutput->Add(fhZEM1Spectrum);
198 fhZEM2Spectrum = new TH1F("fhZEM2Spectrum", "ZEM2 signal", 100,0., 2000.);
199 fOutput->Add(fhZEM2Spectrum);
200
201 fhZNCpmc = new TH1F("fhZNCpmc","ZNC PMC",200, 0., 2000.);
202 fOutput->Add(fhZNCpmc);
203 fhZNApmc = new TH1F("fhZNApmc","ZNA PMC",200, 0., 12000.);
204 fOutput->Add(fhZNApmc);
205 fhZPCpmc = new TH1F("fhZPCpmc","ZPC PMC",200, 0., 2000.);
206 fOutput->Add(fhZPCpmc);
207 fhZPApmc = new TH1F("fhZPApmc","ZPA PMC",200, 0., 2000.);
208 fOutput->Add(fhZPApmc);
209
210 fhZNCCentroid = new TH2F("fhZNCCentroid","Centroid over ZNC",70,-3.5,3.5,70,-3.5,3.5);
211 fOutput->Add(fhZNCCentroid);
212 fhZNACentroid = new TH2F("fhZNACentroid","Centroid over ZNA",70,-3.5,3.5,70,-3.5,3.5);
213 fOutput->Add(fhZNACentroid);
214
215 fhZNCemd = new TH1F("fhZNCemd","ZNC signal lg",200,0.,6000.);
216 fOutput->Add(fhZNCemd);
217 fhZNAemd = new TH1F("fhZNAemd","ZNA signal lg",200,0.,6000.);
218 fOutput->Add(fhZNAemd);
219 fhPMCZNCemd = new TH1F("fhPMCZNCemd","ZNC PMC lg",200, 10., 6000.);
220 fOutput->Add(fhPMCZNCemd);
221 fhPMCZNAemd = new TH1F("fhPMCZNAemd","ZNA PMC lg",200, 10., 6000.);
222 fOutput->Add(fhPMCZNAemd);
223
224 fDebunch = new TH2F("fDebunch","ZN TDC sum vs. diff", 120,-30,30,120,-30,-30);
225 fOutput->Add(fDebunch);
226
227 PostData(1, fOutput);
228}
229
230//________________________________________________________________________
231void AliAnalysisTaskZDCpA::UserExec(Option_t */*option*/)
232{
233 // Execute analysis for current event:
234 if(fDebug>1) printf(" **** AliAnalysisTaskZDCpA::UserExec() \n");
235
236 if (!InputEvent()) {
237 Printf("ERROR: InputEvent not available");
238 return;
239 }
240
241
242 AliESDEvent* esd = dynamic_cast<AliESDEvent*> (InputEvent());
243 if(!esd) return;
244 // Select PHYSICS events (type=7, for data)
245 //if(!fIsMCInput && esd->GetEventType()!=7) return;
246
247 // ********* MC INFO *********************************
248 if(fIsMCInput){
249
250 AliMCEventHandler* eventHandler = dynamic_cast<AliMCEventHandler*> (AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler());
251 if (!eventHandler) {
252 Printf("ERROR: Could not retrieve MC event handler");
253 return;
254 }
255
256 AliMCEvent* mcEvent = eventHandler->MCEvent();
257 if (!mcEvent) {
258 Printf("ERROR: Could not retrieve MC event");
259 return;
260 }
261
262 }
263 // ****************************************************
264
265 AliAnalysisManager *am = AliAnalysisManager::GetAnalysisManager();
266
267 AliESDZDC *esdZDC = esd->GetESDZDC();
268
269 if((((AliInputEventHandler*)(am->GetInputEventHandler()))->IsEventSelected())){
270
271 fhZNCSpectrum->Fill(esdZDC->GetZDCN1Energy());
272 fhZNASpectrum->Fill(esdZDC->GetZDCN2Energy());
273 fhZPCSpectrum->Fill(esdZDC->GetZDCP1Energy());
274 fhZPASpectrum->Fill(esdZDC->GetZDCP2Energy());
275 fhZEM1Spectrum->Fill(esdZDC->GetZDCEMEnergy(0));
276 fhZEM2Spectrum->Fill(esdZDC->GetZDCEMEnergy(1));
277
278 const Double_t * towZNC = esdZDC->GetZN1TowerEnergy();
279 const Double_t * towZPC = esdZDC->GetZP1TowerEnergy();
280 const Double_t * towZNA = esdZDC->GetZN2TowerEnergy();
281 const Double_t * towZPA = esdZDC->GetZP2TowerEnergy();
282 //
283 fhZNCpmc->Fill(towZNC[0]);
284 fhZNApmc->Fill(towZNA[0]);
285 fhZPCpmc->Fill(towZPC[0]);
286 fhZPApmc->Fill(towZPA[0]);
287
288 Double_t xyZNC[2]={-99.,-99.}, xyZNA[2]={-99.,-99.};
289 esdZDC->GetZNCentroidInpp(xyZNC, xyZNA);
290
291 fhZNCCentroid->Fill(xyZNC[0], xyZNC[1]);
292 fhZNACentroid->Fill(xyZNA[0], xyZNA[1]);
293
294 const Double_t * towZNCLG = esdZDC->GetZN1TowerEnergyLR();
295 const Double_t * towZNALG = esdZDC->GetZN2TowerEnergyLR();
296 Double_t znclg=0., znalg=0.;
297 for(Int_t iq=0; iq<5; iq++){
298 znclg += towZNCLG[iq];
299 znalg += towZNALG[iq];
300 }
301 fhZNCemd->Fill(znclg/2.);
302 fhZNAemd->Fill(znalg/2.);
303 fhPMCZNCemd->Fill(towZNCLG[0]);
304 fhPMCZNAemd->Fill(towZNALG[0]);
305
306 }
307
308 Float_t tdcC=999., tdcA=999;
309 Float_t tdcSum=999., tdcDiff=999;
310 for(int i=0; i<4; i++){
311 if(esdZDC->GetZDCTDCData(10,i) != 0.){
312 tdcC = esdZDC->GetZDCTDCCorrected(10,i);
313 if(esdZDC->GetZDCTDCData(12,i) != 0.){
314 tdcA = esdZDC->GetZDCTDCCorrected(12,i);
315 tdcSum = tdcC+tdcA;
316 tdcDiff = tdcC-tdcA;
317 }
318 }
319 if(tdcSum!=999.) fhTDCZNSum->Fill(tdcSum);
320 if(tdcDiff!=999.)fhTDCZNDiff->Fill(tdcDiff);
321 if(tdcSum!=999. && tdcDiff!=999.) fDebunch->Fill(tdcDiff, tdcSum);
322 }
323
324 PostData(1, fOutput);
325
326}
327
328
329
330//________________________________________________________________________
331void AliAnalysisTaskZDCpA::Terminate(Option_t */*option*/)
332{
333 // Terminate analysis
334 //
335}