]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG4/PartCorrBase/AliCaloTrackReader.cxx
Added possibility to recalibrate CaloClusters during the analysis
[u/mrichter/AliRoot.git] / PWG4 / PartCorrBase / AliCaloTrackReader.cxx
CommitLineData
1c5acb87 1/**************************************************************************
2 * Copyright(c) 1998-1999, 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/* $Id: $ */
16
17//_________________________________________________________________________
18// Base class for reading data: MonteCarlo, ESD or AOD, of PHOS EMCAL and
19// Central Barrel Tracking detectors (CTS).
ff45398a 20// Not all MC particles/tracks/clusters are kept, some kinematical/fiducial restrictions are done.
591cc579 21// Mother class of : AliCaloTrackESDReader: Fills ESD data in 3 TObjArrays (PHOS, EMCAL, CTS)
22// : AliCaloTrackMCReader: Fills Kinematics data in 3 TObjArrays (PHOS, EMCAL, CTS)
23// : AliCaloTrackAODReader: Fills AOD data in 3 TObjArrays (PHOS, EMCAL, CTS)
1c5acb87 24//
25//-- Author: Gustavo Conesa (LNF-INFN)
26//////////////////////////////////////////////////////////////////////////////
27
28
29// --- ROOT system ---
591cc579 30#include "TFile.h"
1c5acb87 31
32//---- ANALYSIS system ----
33#include "AliCaloTrackReader.h"
ff45398a 34#include "AliFiducialCut.h"
477d6cee 35#include "AliMCEvent.h"
591cc579 36#include "AliAODMCHeader.h"
37#include "AliGenPythiaEventHeader.h"
8dacfd76 38#include "AliAODEvent.h"
1c5acb87 39
40ClassImp(AliCaloTrackReader)
41
42
43//____________________________________________________________________________
44 AliCaloTrackReader::AliCaloTrackReader() :
a79a2424 45 TObject(), fEventNumber(-1), fCurrentFileName(""),fDataType(0), fDebug(0),
ff45398a 46 fFiducialCut(0x0), fComparePtHardAndJetPt(kFALSE), fPtHardAndJetPtFactor(7),
1c5acb87 47 fCTSPtMin(0), fEMCALPtMin(0),fPHOSPtMin(0),
591cc579 48 fAODCTS(new TObjArray()), fAODEMCAL(new TObjArray()), fAODPHOS(new TObjArray()),
1c5acb87 49 fEMCALCells(0x0), fPHOSCells(0x0),
477d6cee 50 fInputEvent(0x0), fOutputEvent(0x0),fMC(0x0),
1c5acb87 51 fFillCTS(0),fFillEMCAL(0),fFillPHOS(0),
591cc579 52 fFillEMCALCells(0),fFillPHOSCells(0),
afabc52f 53 fSecondInputAODTree(0x0), fSecondInputAODEvent(0x0),
54 fSecondInputFileName(""),fSecondInputFirstEvent(0),
55 fAODCTSNormalInputEntries(0), fAODEMCALNormalInputEntries(0),
591cc579 56 fAODPHOSNormalInputEntries(0), fTrackStatus(0),
afabc52f 57 fReadStack(kFALSE), fReadAODMCParticles(kFALSE),
58 fCleanOutputStdAOD(kFALSE), fDeltaAODFileName("deltaAODPartCorr.root"),fFiredTriggerClassName(""),
765d44e7 59 fAnaLED(kFALSE),fTaskName(""),fCaloUtils(0x0)
1c5acb87 60{
61 //Ctor
62
63 //Initialize parameters
64 InitParameters();
65}
66
67//____________________________________________________________________________
765d44e7 68AliCaloTrackReader::AliCaloTrackReader(const AliCaloTrackReader & reader) :
69 TObject(reader), fEventNumber(reader.fEventNumber), fCurrentFileName(reader.fCurrentFileName),
70 fDataType(reader.fDataType), fDebug(reader.fDebug),
71 fFiducialCut(reader.fFiducialCut),
72 fComparePtHardAndJetPt(reader.fComparePtHardAndJetPt),
73 fPtHardAndJetPtFactor(reader.fPtHardAndJetPtFactor),
74 fCTSPtMin(reader.fCTSPtMin), fEMCALPtMin(reader.fEMCALPtMin),fPHOSPtMin(reader.fPHOSPtMin),
75 fAODCTS(new TObjArray(*reader.fAODCTS)),
76 fAODEMCAL(new TObjArray(*reader.fAODEMCAL)),
77 fAODPHOS(new TObjArray(*reader.fAODPHOS)),
78 fEMCALCells(new TNamed(*reader.fEMCALCells)),
79 fPHOSCells(new TNamed(*reader.fPHOSCells)),
80 fInputEvent(reader.fInputEvent), fOutputEvent(reader.fOutputEvent), fMC(reader.fMC),
81 fFillCTS(reader.fFillCTS),fFillEMCAL(reader.fFillEMCAL),fFillPHOS(reader.fFillPHOS),
82 fFillEMCALCells(reader.fFillEMCALCells),fFillPHOSCells(reader.fFillPHOSCells),
83 fSecondInputAODTree(reader.fSecondInputAODTree),
84 fSecondInputAODEvent(reader.fSecondInputAODEvent),
85 fSecondInputFileName(reader.fSecondInputFileName),
86 fSecondInputFirstEvent(reader.fSecondInputFirstEvent),
87 fAODCTSNormalInputEntries(reader.fAODCTSNormalInputEntries),
88 fAODEMCALNormalInputEntries(reader.fAODEMCALNormalInputEntries),
89 fAODPHOSNormalInputEntries(reader.fAODPHOSNormalInputEntries),
90 fTrackStatus(reader.fTrackStatus),
91 fReadStack(reader.fReadStack), fReadAODMCParticles(reader.fReadAODMCParticles),
92 fCleanOutputStdAOD(reader.fCleanOutputStdAOD), fDeltaAODFileName(reader.fDeltaAODFileName),
93 fFiredTriggerClassName(reader.fFiredTriggerClassName),
94 fAnaLED(reader.fAnaLED),
95 fTaskName(reader.fTaskName),
96 fCaloUtils(new AliCalorimeterUtils(*reader.fCaloUtils))
1c5acb87 97{
03190ad7 98 // cpy ctor
1c5acb87 99}
100
101//_________________________________________________________________________
03190ad7 102//AliCaloTrackReader & AliCaloTrackReader::operator = (const AliCaloTrackReader & source)
103//{
104// // assignment operator
105//
106// if(&source == this) return *this;
107//
108// fDataType = source.fDataType ;
109// fDebug = source.fDebug ;
110// fEventNumber = source.fEventNumber ;
111// fCurrentFileName = source.fCurrentFileName ;
112// fFiducialCut = source.fFiducialCut;
113//
114// fComparePtHardAndJetPt = source.fComparePtHardAndJetPt;
115// fPtHardAndJetPtFactor = source.fPtHardAndJetPtFactor;
116//
117// fCTSPtMin = source.fCTSPtMin ;
118// fEMCALPtMin = source.fEMCALPtMin ;
119// fPHOSPtMin = source.fPHOSPtMin ;
120//
121// fAODCTS = new TObjArray(*source.fAODCTS) ;
122// fAODEMCAL = new TObjArray(*source.fAODEMCAL) ;
123// fAODPHOS = new TObjArray(*source.fAODPHOS) ;
124// fEMCALCells = new TNamed(*source.fEMCALCells) ;
125// fPHOSCells = new TNamed(*source.fPHOSCells) ;
126//
127// fInputEvent = source.fInputEvent;
128// fOutputEvent = source.fOutputEvent;
129// fMC = source.fMC;
130//
131// fFillCTS = source.fFillCTS;
132// fFillEMCAL = source.fFillEMCAL;
133// fFillPHOS = source.fFillPHOS;
134// fFillEMCALCells = source.fFillEMCALCells;
135// fFillPHOSCells = source.fFillPHOSCells;
136//
137// fSecondInputAODTree = source.fSecondInputAODTree;
138// fSecondInputAODEvent = source.fSecondInputAODEvent;
139// fSecondInputFileName = source.fSecondInputFileName;
140// fSecondInputFirstEvent = source.fSecondInputFirstEvent;
141//
142// fAODCTSNormalInputEntries = source.fAODCTSNormalInputEntries;
143// fAODEMCALNormalInputEntries = source.fAODEMCALNormalInputEntries;
144// fAODPHOSNormalInputEntries = source.fAODPHOSNormalInputEntries;
145//
146// fTrackStatus = source.fTrackStatus;
147// fReadStack = source.fReadStack;
148// fReadAODMCParticles = source.fReadAODMCParticles;
149//
150// fCleanOutputStdAOD = source.fCleanOutputStdAOD;
151// fDeltaAODFileName = source.fDeltaAODFileName;
152//
153// fFiredTriggerClassName = source.fFiredTriggerClassName ;
154//
03190ad7 155// return *this;
156//
157//}
1c5acb87 158
159//_________________________________
160AliCaloTrackReader::~AliCaloTrackReader() {
161 //Dtor
162
ff45398a 163 if(fFiducialCut) delete fFiducialCut ;
29b2ceec 164
1c5acb87 165 if(fAODCTS){
166 fAODCTS->Clear() ;
167 delete fAODCTS ;
168 }
169
170 if(fAODEMCAL){
171 fAODEMCAL->Clear() ;
172 delete fAODEMCAL ;
173 }
174
175 if(fAODPHOS){
176 fAODPHOS->Clear() ;
177 delete fAODPHOS ;
178 }
179
180 if(fEMCALCells){
181 fEMCALCells->Clear() ;
182 delete fEMCALCells ;
183 }
184
185 if(fPHOSCells){
186 fPHOSCells->Clear() ;
187 delete fPHOSCells ;
188 }
591cc579 189
7787a778 190// Pointers not owned, done by the analysis frame
191// if(fInputEvent) delete fInputEvent ;
192// if(fOutputEvent) delete fOutputEvent ;
193// if(fMC) delete fMC ;
591cc579 194
7787a778 195// if(fSecondInputAODTree){
196// fSecondInputAODTree->Clear();
197// delete fSecondInputAODTree;
198// }
199//
200// if(fSecondInputAODEvent) delete fSecondInputAODEvent ;
c1ac3823 201
7787a778 202 // Pointer not owned, deleted by maker
203 //if (fCaloUtils) delete fCaloUtils ;
c1ac3823 204
205}
477d6cee 206
591cc579 207//_________________________________________________________________________
208Bool_t AliCaloTrackReader::ComparePtHardAndJetPt(){
209 // Check the event, if the requested ptHard is much larger than the jet pT, then there is a problem.
210 // Only for PYTHIA.
211 if(!fReadStack) return kTRUE; //Information not filtered to AOD
212
213 if(!strcmp(GetGenEventHeader()->ClassName(), "AliGenPythiaEventHeader")){
214 TParticle * jet = new TParticle;
215 AliGenPythiaEventHeader* pygeh= (AliGenPythiaEventHeader*) GetGenEventHeader();
216 Int_t nTriggerJets = pygeh->NTriggerJets();
217 Float_t ptHard = pygeh->GetPtHard();
218
219 //if(fDebug > 1) printf("AliMCAnalysisUtils::PythiaEventHeader: Njets: %d, pT Hard %f\n",nTriggerJets, ptHard);
220 Float_t tmpjet[]={0,0,0,0};
221 for(Int_t ijet = 0; ijet< nTriggerJets; ijet++){
222 pygeh->TriggerJet(ijet, tmpjet);
223 jet = new TParticle(94, 21, -1, -1, -1, -1, tmpjet[0],tmpjet[1],tmpjet[2],tmpjet[3], 0,0,0,0);
224 //Compare jet pT and pt Hard
225 //if(fDebug > 1) printf("AliMCAnalysisUtils:: %d pycell jet pT %f\n",ijet, jet->Pt());
226 if(jet->Pt() > fPtHardAndJetPtFactor * ptHard) {
227 printf("AliMCAnalysisUtils::PythiaEventHeader: Njets: %d, pT Hard %2.2f, pycell jet pT %2.2f, rejection factor %1.1f\n",
228 nTriggerJets, ptHard, jet->Pt(), fPtHardAndJetPtFactor);
229 return kFALSE;
230 }
231 }
232 }
233
234 return kTRUE ;
235
236}
237
1c5acb87 238//____________________________________________________________________________
239AliStack* AliCaloTrackReader::GetStack() const {
240 //Return pointer to stack
241 if(fMC)
242 return fMC->Stack();
243 else{
477d6cee 244 if(fDebug > 1) printf("AliCaloTrackReader::GetStack() - Stack is not available\n");
1c5acb87 245 return 0x0 ;
246 }
247}
248
249//____________________________________________________________________________
250AliHeader* AliCaloTrackReader::GetHeader() const {
251 //Return pointer to header
252 if(fMC)
253 return fMC->Header();
254 else{
477d6cee 255 printf("AliCaloTrackReader::Header is not available\n");
1c5acb87 256 return 0x0 ;
257 }
258}
259//____________________________________________________________________________
260AliGenEventHeader* AliCaloTrackReader::GetGenEventHeader() const {
261 //Return pointer to Generated event header
262 if(fMC)
263 return fMC->GenEventHeader();
264 else{
477d6cee 265 printf("AliCaloTrackReader::GenEventHeader is not available\n");
1c5acb87 266 return 0x0 ;
267 }
268}
269
591cc579 270//____________________________________________________________________________
271TClonesArray* AliCaloTrackReader::GetAODMCParticles(Int_t input) const {
272 //Return list of particles in AOD. Do it for the corresponding input event.
273 if(fDataType == kAOD){
274 //Normal input AOD
275 if(input == 0) return (TClonesArray*)((AliAODEvent*)fInputEvent)->FindListObject("mcparticles");
276 //Second input AOD
277 else if(input == 1 && fSecondInputAODEvent) return (TClonesArray*) fSecondInputAODEvent->FindListObject("mcparticles");
278 else {
279 printf("AliCaloTrackReader::GetAODMCParticles() - wrong AOD input index? %d, or non existing tree? \n",input);
280 return 0x0;
281 }
282 }
283 else {
284 printf("AliCaloTrackReader::GetAODMCParticles() - Input are not AODs\n");
285 return 0x0;
286 }
287}
288
289//____________________________________________________________________________
290AliAODMCHeader* AliCaloTrackReader::GetAODMCHeader(Int_t input) const {
291 //Return MC header in AOD. Do it for the corresponding input event.
292 if(fDataType == kAOD){
293 //Normal input AOD
294 if(input == 0) return (AliAODMCHeader*)((AliAODEvent*)fInputEvent)->FindListObject("mcheader");
295 //Second input AOD
296 else if(input == 1) return (AliAODMCHeader*) fSecondInputAODEvent->FindListObject("mcheader");
297 else {
298 printf("AliCaloTrackReader::GetAODMCHeader() - wrong AOD input index, %d\n",input);
299 return 0x0;
300 }
301 }
302 else {
303 printf("AliCaloTrackReader::GetAODMCHeader() - Input are not AODs\n");
304 return 0x0;
305 }
306}
307
308//_______________________________________________________________
309void AliCaloTrackReader::Init()
310{
311 //Init reader. Method to be called in AliAnaPartCorrMaker
312
313 //Get the file with second input events if the filename is given
314 //Get the tree and connect the AODEvent. Only with AODs
f1f0bd84 315
591cc579 316 if(fReadStack && fReadAODMCParticles){
317 printf("AliCaloTrackReader::Init() - Cannot access stack and mcparticles at the same time, change them \n");
318 fReadStack = kFALSE;
319 fReadAODMCParticles = kFALSE;
320 }
321
591cc579 322 if(fSecondInputFileName!=""){
323 if(fDataType == kAOD){
324 TFile * input2 = new TFile(fSecondInputFileName,"read");
ddcb0d54 325 printf("AliCaloTrackReader::Init() - Second input file opened: %s, size %d \n", input2->GetName(), (Int_t) input2->GetSize());
591cc579 326 fSecondInputAODTree = (TTree*) input2->Get("aodTree");
ddcb0d54 327 if(fSecondInputAODTree) printf("AliCaloTrackReader::Init() - Second input tree opened: %s, entries %d \n",
328 fSecondInputAODTree->GetName(), (Int_t) fSecondInputAODTree->GetEntries());
329 else{
330 printf("AliCaloTrackReader::Init() - Second input tree not available, STOP \n");
331 abort();
332 }
591cc579 333 fSecondInputAODEvent = new AliAODEvent;
334 fSecondInputAODEvent->ReadFromTree(fSecondInputAODTree);
335 if(fSecondInputFirstEvent >= fSecondInputAODTree->GetEntriesFast()){
336 printf("AliCaloTrackReader::Init() - Requested first event of second input %d, is larger than number of events %d, STOP\n",
337 fSecondInputFirstEvent, (Int_t) fSecondInputAODTree->GetEntriesFast());
338 abort();
339 }
340 }
341 else printf("AliCaloTrackReader::Init() - Second input not added, reader is not AOD\n");
342 }
591cc579 343}
765d44e7 344
1c5acb87 345//_______________________________________________________________
346void AliCaloTrackReader::InitParameters()
347{
1c5acb87 348 //Initialize the parameters of the analysis.
591cc579 349 fDataType = kESD ;
1c5acb87 350 fCTSPtMin = 0.2 ;
29b2ceec 351 fEMCALPtMin = 0.2 ;
352 fPHOSPtMin = 0.2 ;
1c5acb87 353
902aa95c 354 //Do not filter the detectors input by default.
355 fFillEMCAL = kFALSE;
356 fFillPHOS = kFALSE;
357 fFillCTS = kFALSE;
1c5acb87 358 fFillEMCALCells = kFALSE;
591cc579 359 fFillPHOSCells = kFALSE;
1c5acb87 360
ff45398a 361 fFiducialCut = new AliFiducialCut();
591cc579 362 fSecondInputFileName = "" ;
363 fSecondInputFirstEvent = 0 ;
364 fReadStack = kFALSE; // Check in the constructor of the other readers if it was set or in the configuration file
365 fReadAODMCParticles = kFALSE; // Check in the constructor of the other readers if it was set or in the configuration file
08a064bc 366 fCleanOutputStdAOD = kFALSE; // Clean the standard clusters/tracks?
42dc8e7d 367 fDeltaAODFileName = "deltaAODPartCorr.root";
72d2488e 368 fFiredTriggerClassName = "";
765d44e7 369
c1ac3823 370 fAnaLED = kFALSE;
4e2b43d8 371}
1c5acb87 372
373//________________________________________________________________
374void AliCaloTrackReader::Print(const Option_t * opt) const
375{
376
377 //Print some relevant parameters set for the analysis
378 if(! opt)
379 return;
380
381 printf("***** Print: %s %s ******\n", GetName(), GetTitle() ) ;
486258c9 382 printf("Task name : %s\n", fTaskName.Data()) ;
1c5acb87 383 printf("Data type : %d\n", fDataType) ;
384 printf("CTS Min pT : %2.1f GeV/c\n", fCTSPtMin) ;
385 printf("EMCAL Min pT : %2.1f GeV/c\n", fEMCALPtMin) ;
386 printf("PHOS Min pT : %2.1f GeV/c\n", fPHOSPtMin) ;
387 printf("Use CTS = %d\n", fFillCTS) ;
388 printf("Use EMCAL = %d\n", fFillEMCAL) ;
389 printf("Use PHOS = %d\n", fFillPHOS) ;
390 printf("Use EMCAL Cells = %d\n", fFillEMCALCells) ;
391 printf("Use PHOS Cells = %d\n", fFillPHOSCells) ;
591cc579 392 printf("Track status = %d\n", (Int_t) fTrackStatus) ;
393 if(fComparePtHardAndJetPt)
394 printf("Compare jet pt and pt hard to accept event, factor = %2.2f",fPtHardAndJetPtFactor);
395
396 if(fSecondInputFileName!="") {
397 printf("Second Input File Name = %s\n", fSecondInputFileName.Data()) ;
398 printf("Second Input First Event = %d\n", fSecondInputFirstEvent) ;
399 }
400
42dc8e7d 401 printf("Read Kine from, stack? %d, AOD ? %d \n", fReadStack, fReadAODMCParticles) ;
08a064bc 402 printf("Clean std AOD = %d\n", fCleanOutputStdAOD) ;
42dc8e7d 403 printf("Delta AOD File Name = %s\n", fDeltaAODFileName.Data()) ;
1c5acb87 404 printf(" \n") ;
405}
406
407//___________________________________________________
29b2ceec 408Bool_t AliCaloTrackReader::FillInputEvent(const Int_t iEntry, const char * currentFileName) {
6639984f 409 //Fill the event counter and input lists that are needed, called by the analysis maker.
902aa95c 410
6639984f 411 fEventNumber = iEntry;
a79a2424 412 fCurrentFileName = TString(currentFileName);
be1f5fa4 413 if(!fInputEvent) {
f7c2338a 414 if(fDebug >= 0) printf("AliCaloTrackReader::FillInputEvent() - Input event not available, skip event analysis\n");
be1f5fa4 415 return kFALSE;
416 }
72d2488e 417 //Select events only fired by a certain trigger configuration if it is provided
be1f5fa4 418 Int_t eventType = 0;
419 if(fInputEvent->GetHeader())
420 eventType = ((AliVHeader*)fInputEvent->GetHeader())->GetEventType();
c1ac3823 421 if( fFiredTriggerClassName !="" && !fAnaLED){
422 if(eventType!=7)return kFALSE; //Only physics event, do not use for simulated events!!!
7ec23b5a 423 if(fDebug > 0)
424 printf("AliCaloTrackReader::FillInputEvent() - FiredTriggerClass <%s>, selected class <%s>, compare name %d\n",
425 GetFiredTriggerClasses().Data(),fFiredTriggerClassName.Data(), GetFiredTriggerClasses().Contains(fFiredTriggerClassName));
426 if( !GetFiredTriggerClasses().Contains(fFiredTriggerClassName) ) return kFALSE;
72d2488e 427 }
c1ac3823 428 else if(fAnaLED){
429// kStartOfRun = 1, // START_OF_RUN
430// kEndOfRun = 2, // END_OF_RUN
431// kStartOfRunFiles = 3, // START_OF_RUN_FILES
432// kEndOfRunFiles = 4, // END_OF_RUN_FILES
433// kStartOfBurst = 5, // START_OF_BURST
434// kEndOfBurst = 6, // END_OF_BURST
435// kPhysicsEvent = 7, // PHYSICS_EVENT
436// kCalibrationEvent = 8, // CALIBRATION_EVENT
437// kFormatError = 9, // EVENT_FORMAT_ERROR
438// kStartOfData = 10, // START_OF_DATA
439// kEndOfData = 11, // END_OF_DATA
440// kSystemSoftwareTriggerEvent = 12, // SYSTEM_SOFTWARE_TRIGGER_EVENT
441// kDetectorSoftwareTriggerEvent = 13 // DETECTOR_SOFTWARE_TRIGGER_EVENT
442
443 if(eventType!=7 && fDebug > 1 )printf("AliCaloTrackReader::FillInputEvent() - DO LED, Event Type <%d>, 8 Calibration \n", eventType);
444 if(eventType!=8)return kFALSE;
445 }
446
902aa95c 447 if(fOutputEvent && (fDataType != kAOD) && ((fOutputEvent->GetCaloClusters())->GetEntriesFast()!=0 ||(fOutputEvent->GetTracks())->GetEntriesFast()!=0)){
7ec23b5a 448 if (fFillCTS || fFillEMCAL || fFillPHOS) {
449 printf("AliCaloTrackReader::AODCaloClusters or AODTracks already filled by the filter, do not use the ESD reader, use the AOD reader, STOP\n");
6fc16b1d 450 abort();
7ec23b5a 451 }
477d6cee 452 }
902aa95c 453
29b2ceec 454 //In case of analysis of events with jets, skip those with jet pt > 5 pt hard
455 if(fComparePtHardAndJetPt && GetStack()) {
7ec23b5a 456 if(!ComparePtHardAndJetPt()) return kFALSE ;
29b2ceec 457 }
591cc579 458
459 //In case of mixing events with other AOD file
460 if(fDataType == kAOD && fSecondInputAODTree){
461
afabc52f 462 if(fDebug > 1)
463 printf("AliCaloTrackReader::FillInputEvent() - Get event %d from second input AOD file \n", iEntry+fSecondInputFirstEvent);
464 if(fSecondInputAODTree->GetEntriesFast() <= iEntry+fSecondInputFirstEvent) {
465 if(fSecondInputAODTree->GetEntriesFast() == iEntry+fSecondInputFirstEvent)
591cc579 466 printf("AliCaloTrackReader::FillInputEvent() - Skip events from event %d, no more events in second AOD file \n", iEntry);
afabc52f 467 return kFALSE;
468 }
469
470 //Get the Event
471 Int_t nbytes = fSecondInputAODTree->GetEvent(iEntry+fSecondInputFirstEvent);
472 if ( nbytes == 0 ) {//If nothing in AOD
473 printf("AliCaloTrackReader::FillInputEvent() - Nothing in Second AOD input, STOP\n");
474 abort() ;
475 }
476
591cc579 477 }
09e819c9 478
479 if(fFillEMCALCells) FillInputEMCALCells();
480 if(fFillPHOSCells) FillInputPHOSCells();
481
477d6cee 482 if(fFillCTS) FillInputCTS();
1c5acb87 483 if(fFillEMCAL) FillInputEMCAL();
477d6cee 484 if(fFillPHOS) FillInputPHOS();
09e819c9 485
7ec23b5a 486
29b2ceec 487 return kTRUE ;
1c5acb87 488}
489
490//__________________________________________________
491void AliCaloTrackReader::ResetLists() {
492 // Reset lists, called by the analysis maker
493
477d6cee 494 if(fAODCTS) fAODCTS -> Clear();
1c5acb87 495 if(fAODEMCAL) fAODEMCAL -> Clear();
477d6cee 496 if(fAODPHOS) fAODPHOS -> Clear();
1c5acb87 497 if(fEMCALCells) fEMCALCells -> Clear();
477d6cee 498 if(fPHOSCells) fPHOSCells -> Clear();
902aa95c 499 if(fCleanOutputStdAOD && fOutputEvent ){
afabc52f 500 //Only keep copied tracks and clusters if requested
501 fOutputEvent->GetTracks() ->Clear();
502 fOutputEvent->GetCaloClusters()->Clear();
42dc8e7d 503 }
7ec23b5a 504
1c5acb87 505}