]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG2/FLOW/AliFlowTasks/AliAnalysisTaskFlowEvent.cxx
coverity fixes
[u/mrichter/AliRoot.git] / PWG2 / FLOW / AliFlowTasks / AliAnalysisTaskFlowEvent.cxx
CommitLineData
1c1d4332 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 *
940a5ed1 13* provided "as is" without express or implied warranty. *
1c1d4332 14**************************************************************************/
15
fdff44c8 16////////////////////////////////////////////////////
17// AliAnalysisTaskFlowEvent:
18//
19// analysis task for filling the flow event
20// from MCEvent, ESD, AOD ....
940a5ed1 21// and put it in an output stream so it can
22// be used by the various flow analysis methods
fdff44c8 23// for cuts the correction framework is used
24// which also outputs QA histograms to view
25// the effects of the cuts
26////////////////////////////////////////////////////
27
1c1d4332 28#include "Riostream.h" //needed as include
29#include "TChain.h"
30#include "TTree.h"
31#include "TFile.h" //needed as include
32#include "TList.h"
44e060e0 33#include "TH2F.h"
489fdf79 34#include "TRandom3.h"
35#include "TTimeStamp.h"
1c1d4332 36
7183fe85 37// ALICE Analysis Framework
1c1d4332 38#include "AliAnalysisManager.h"
fbdb53fa 39#include "AliAnalysisTaskSE.h"
85d2ee8d 40#include "AliESDtrackCuts.h"
1c1d4332 41
7183fe85 42// ESD interface
1c1d4332 43#include "AliESDEvent.h"
44#include "AliESDInputHandler.h"
45
7183fe85 46// AOD interface
1c1d4332 47#include "AliAODEvent.h"
48#include "AliAODInputHandler.h"
49
7183fe85 50// Monte Carlo Event
1c1d4332 51#include "AliMCEventHandler.h"
52#include "AliMCEvent.h"
53
7183fe85 54// ALICE Correction Framework
1c1d4332 55#include "AliCFManager.h"
56
7183fe85 57// Interface to Event generators to get Reaction Plane Angle
58#include "AliGenCocktailEventHeader.h"
59#include "AliGenHijingEventHeader.h"
48ad51a1 60#include "AliGenGeVSimEventHeader.h"
26f120fa 61#include "AliGenEposEventHeader.h"
7183fe85 62
6e214c87 63// Interface to Load short life particles
64#include "TObjArray.h"
65#include "AliFlowCandidateTrack.h"
66
7183fe85 67// Interface to make the Flow Event Simple used in the flow analysis methods
940a5ed1 68#include "AliFlowEvent.h"
daf66719 69#include "AliFlowTrackCuts.h"
70#include "AliFlowEventCuts.h"
d459546b 71#include "AliFlowCommonConstants.h"
7183fe85 72#include "AliAnalysisTaskFlowEvent.h"
73
77111ee6 74#include "AliLog.h"
75
1c1d4332 76ClassImp(AliAnalysisTaskFlowEvent)
940a5ed1 77
1c1d4332 78//________________________________________________________________________
940a5ed1 79AliAnalysisTaskFlowEvent::AliAnalysisTaskFlowEvent() :
80 AliAnalysisTaskSE(),
46bec39c 81 // fOutputFile(NULL),
12b2b8bc 82 fAnalysisType("AUTOMATIC"),
ef4799a7 83 fRPType("Global"),
1c1d4332 84 fCFManager1(NULL),
85 fCFManager2(NULL),
daf66719 86 fCutsEvent(NULL),
87 fCutsRP(NULL),
88 fCutsPOI(NULL),
499fe731 89 fQAList(NULL),
fdff44c8 90 fMinMult(0),
91 fMaxMult(10000000),
7a01f4a7 92 fMinA(-1.0),
93 fMaxA(-0.01),
94 fMinB(0.01),
95 fMaxB(1.0),
499fe731 96 fQAon(kFALSE),
6e214c87 97 fLoadCandidates(kFALSE),
d459546b 98 fNbinsMult(10000),
99 fNbinsPt(100),
100 fNbinsPhi(100),
101 fNbinsEta(200),
102 fNbinsQ(500),
103 fMultMin(0.),
104 fMultMax(10000.),
105 fPtMin(0.),
106 fPtMax(10.),
107 fPhiMin(0.),
108 fPhiMax(TMath::TwoPi()),
109 fEtaMin(-5.),
110 fEtaMax(5.),
111 fQMin(0.),
112 fQMax(3.),
f6f8c3fc 113 fExcludedEtaMin(0.),
114 fExcludedEtaMax(0.),
115 fExcludedPhiMin(0.),
116 fExcludedPhiMax(0.),
54089829 117 fAfterburnerOn(kFALSE),
118 fNonFlowNumberOfTrackClones(0),
119 fV1(0.),
120 fV2(0.),
121 fV3(0.),
122 fV4(0.),
1a80f9f6 123 fV5(0.),
7d27a354 124 fFlowEvent(NULL),
aab6527a 125 fMyTRandom3(NULL)
1c1d4332 126{
127 // Constructor
128 cout<<"AliAnalysisTaskFlowEvent::AliAnalysisTaskFlowEvent()"<<endl;
129}
130
489fdf79 131//________________________________________________________________________
6e214c87 132AliAnalysisTaskFlowEvent::AliAnalysisTaskFlowEvent(const char *name, TString RPtype, Bool_t on, UInt_t iseed, Bool_t bCandidates) :
940a5ed1 133 AliAnalysisTaskSE(name),
134 // fOutputFile(NULL),
12b2b8bc 135 fAnalysisType("AUTOMATIC"),
44e060e0 136 fRPType(RPtype),
489fdf79 137 fCFManager1(NULL),
138 fCFManager2(NULL),
daf66719 139 fCutsEvent(NULL),
140 fCutsRP(NULL),
141 fCutsPOI(NULL),
499fe731 142 fQAList(NULL),
fdff44c8 143 fMinMult(0),
144 fMaxMult(10000000),
7a01f4a7 145 fMinA(-1.0),
146 fMaxA(-0.01),
147 fMinB(0.01),
148 fMaxB(1.0),
499fe731 149 fQAon(on),
6e214c87 150 fLoadCandidates(bCandidates),
d459546b 151 fNbinsMult(10000),
152 fNbinsPt(100),
153 fNbinsPhi(100),
154 fNbinsEta(200),
155 fNbinsQ(500),
156 fMultMin(0.),
157 fMultMax(10000.),
158 fPtMin(0.),
159 fPtMax(10.),
160 fPhiMin(0.),
161 fPhiMax(TMath::TwoPi()),
162 fEtaMin(-5.),
163 fEtaMax(5.),
164 fQMin(0.),
165 fQMax(3.),
f6f8c3fc 166 fExcludedEtaMin(0.),
167 fExcludedEtaMax(0.),
168 fExcludedPhiMin(0.),
169 fExcludedPhiMax(0.),
54089829 170 fAfterburnerOn(kFALSE),
171 fNonFlowNumberOfTrackClones(0),
172 fV1(0.),
173 fV2(0.),
174 fV3(0.),
175 fV4(0.),
1a80f9f6 176 fV5(0.),
7d27a354 177 fFlowEvent(NULL),
aab6527a 178 fMyTRandom3(NULL)
489fdf79 179{
180 // Constructor
181 cout<<"AliAnalysisTaskFlowEvent::AliAnalysisTaskFlowEvent(const char *name, Bool_t on, UInt_t iseed)"<<endl;
940a5ed1 182 fMyTRandom3 = new TRandom3(iseed);
489fdf79 183 gRandom->SetSeed(fMyTRandom3->Integer(65539));
65201059 184
6e214c87 185 int availableINslot=1;
44e060e0 186 //FMD input slot
187 if (strcmp(RPtype,"FMD")==0) {
6e214c87 188 DefineInput(availableINslot++, TList::Class());
44e060e0 189 }
6e214c87 190 //Candidates input slot
191 if( fLoadCandidates )
192 DefineInput(availableINslot, TObjArray::Class());
65201059 193
194 // Define output slots here
489fdf79 195 // Define here the flow event output
940a5ed1 196 DefineOutput(1, AliFlowEventSimple::Class());
499fe731 197 DefineOutput(2, TList::Class());
6e214c87 198
489fdf79 199 // and for testing open an output file
200 // fOutputFile = new TFile("FlowEvents.root","RECREATE");
201
202}
203
1c1d4332 204//________________________________________________________________________
205AliAnalysisTaskFlowEvent::~AliAnalysisTaskFlowEvent()
206{
207 //
208 // Destructor
209 //
32b846cd 210 delete fMyTRandom3;
f299ea19 211 delete fFlowEvent;
499fe731 212 delete fCutsEvent;
213 delete fCutsRP;
214 delete fCutsPOI;
215 delete fQAList;
940a5ed1 216 // objects in the output list are deleted
1c1d4332 217 // by the TSelector dtor (I hope)
218
219}
220
32b846cd 221//________________________________________________________________________
222void AliAnalysisTaskFlowEvent::NotifyRun()
223{
224 //at the beginning of each new run
225 AliESDEvent* fESD = dynamic_cast<AliESDEvent*> (InputEvent());
2a745a5f 226 if (!fESD) return;
3abf7ecc 227
228 Int_t run = fESD->GetRunNumber();
229 AliInfo(Form("Stariting run #%i",run));
32b846cd 230}
231
1c1d4332 232//________________________________________________________________________
940a5ed1 233void AliAnalysisTaskFlowEvent::UserCreateOutputObjects()
1c1d4332 234{
235 // Called at every worker node to initialize
236 cout<<"AliAnalysisTaskFlowEvent::CreateOutputObjects()"<<endl;
237
12b2b8bc 238 if (!(fAnalysisType == "AOD" || fAnalysisType == "ESD" || fAnalysisType == "ESDMCkineESD" || fAnalysisType == "ESDMCkineMC" || fAnalysisType == "MC" || fAnalysisType == "AUTOMATIC"))
940a5ed1 239 {
12b2b8bc 240 AliError("WRONG ANALYSIS TYPE! only ESD, ESDMCkineESD, ESDMCkineMC, AOD, MC and AUTOMATIC are allowed.");
1c1d4332 241 exit(1);
242 }
d459546b 243
244 //set the common constants
245 AliFlowCommonConstants* cc = AliFlowCommonConstants::GetMaster();
246 cc->SetNbinsMult(fNbinsMult);
247 cc->SetNbinsPt(fNbinsPt);
248 cc->SetNbinsPhi(fNbinsPhi);
249 cc->SetNbinsEta(fNbinsEta);
250 cc->SetNbinsQ(fNbinsQ);
251 cc->SetMultMin(fMultMin);
252 cc->SetMultMax(fMultMax);
253 cc->SetPtMin(fPtMin);
254 cc->SetPtMax(fPtMax);
255 cc->SetPhiMin(fPhiMin);
256 cc->SetPhiMax(fPhiMax);
257 cc->SetEtaMin(fEtaMin);
258 cc->SetEtaMax(fEtaMax);
259 cc->SetQMin(fQMin);
260 cc->SetQMax(fQMax);
261
7d27a354 262 fFlowEvent = new AliFlowEvent(3000);
263
499fe731 264 if (fQAon)
265 {
266 fQAList=new TList();
a14b8f3c 267 fQAList->SetOwner();
499fe731 268 fQAList->SetName(Form("%s QA",GetName()));
269 if (fCutsEvent->GetQA()) fQAList->Add(fCutsEvent->GetQA());
270 if (fCutsRP->GetQA()) fQAList->Add(fCutsRP->GetQA());
271 if (fCutsPOI->GetQA())fQAList->Add(fCutsPOI->GetQA());
272 PostData(2,fQAList);
273 }
1c1d4332 274}
275
276//________________________________________________________________________
940a5ed1 277void AliAnalysisTaskFlowEvent::UserExec(Option_t *)
1c1d4332 278{
279 // Main loop
280 // Called for each event
7d27a354 281 //delete fFlowEvent;
940a5ed1 282 AliMCEvent* mcEvent = MCEvent(); // from TaskSE
283 AliESDEvent* myESD = dynamic_cast<AliESDEvent*>(InputEvent()); // from TaskSE
284 AliAODEvent* myAOD = dynamic_cast<AliAODEvent*>(InputEvent()); // from TaskSE
ef4799a7 285 AliMultiplicity* myTracklets = NULL;
333ce021 286 AliESDPmdTrack* pmdtracks = NULL;//pmd
ef4799a7 287
6e214c87 288 int availableINslot=1;
3ca4688a 289
2a745a5f 290 if (!(fCutsRP&&fCutsPOI&&fCutsEvent))
291 {
292 AliError("cuts not set");
293 return;
294 }
295
7d27a354 296 //DEFAULT - automatically takes care of everything
12b2b8bc 297 if (fAnalysisType == "AUTOMATIC")
daf66719 298 {
7d9ab4fb 299 //check event cuts
2a745a5f 300 if (!fCutsEvent->IsSelected(InputEvent())) return;
7d9ab4fb 301
03d364db 302 //first attach all possible information to the cuts
441ea1cf 303 fCutsRP->SetEvent( InputEvent(), MCEvent() ); //attach event
304 fCutsPOI->SetEvent( InputEvent(), MCEvent() );
32b846cd 305
03d364db 306 //then make the event
7d27a354 307 fFlowEvent->Fill( fCutsRP, fCutsPOI );
308 //fFlowEvent = new AliFlowEvent( fCutsRP, fCutsPOI );
309
daf66719 310 if (myESD)
7d27a354 311 fFlowEvent->SetReferenceMultiplicity(fCutsEvent->GetReferenceMultiplicity(InputEvent()));
312 if (mcEvent && mcEvent->GenEventHeader()) fFlowEvent->SetMCReactionPlaneAngle(mcEvent);
daf66719 313 }
940a5ed1 314
315 // Make the FlowEvent for MC input
a0241c3a 316 else if (fAnalysisType == "MC")
940a5ed1 317 {
1c1d4332 318 // Process MC truth, therefore we receive the AliAnalysisManager and ask it for the AliMCEventHandler
319 // This handler can return the current MC event
940a5ed1 320 if (!(fCFManager1&&fCFManager2))
321 {
77111ee6 322 AliError("ERROR: No pointer to correction framework cuts! ");
940a5ed1 323 return;
324 }
325 if (!mcEvent)
326 {
77111ee6 327 AliError("ERROR: Could not retrieve MC event");
940a5ed1 328 return;
329 }
1c1d4332 330
6d7734d2 331 fCFManager1->SetMCEventInfo(mcEvent);
332 fCFManager2->SetMCEventInfo(mcEvent);
940a5ed1 333
77111ee6 334 AliInfo(Form("Number of MC particles: %d", mcEvent->GetNumberOfTracks()));
335
336 //check multiplicity
337 if (!fCFManager1->CheckEventCuts(AliCFManager::kEvtGenCuts,mcEvent))
338 {
339 AliWarning("Event does not pass multiplicity cuts"); return;
340 }
341 //make event
7d27a354 342 fFlowEvent = new AliFlowEvent(mcEvent,fCFManager1,fCFManager2);
1c1d4332 343 }
ef4799a7 344
940a5ed1 345 // Make the FlowEvent for ESD input
346 else if (fAnalysisType == "ESD")
347 {
348 if (!(fCFManager1&&fCFManager2))
349 {
77111ee6 350 AliError("ERROR: No pointer to correction framework cuts!");
940a5ed1 351 return;
352 }
353 if (!myESD)
354 {
77111ee6 355 AliError("ERROR: ESD not available");
940a5ed1 356 return;
357 }
77111ee6 358
b0569f96 359 //check the offline trigger (check if the event has the correct trigger)
ade93aa4 360 AliInfo(Form("ESD has %d tracks", fInputEvent->GetNumberOfTracks()));
77111ee6 361
362 //check multiplicity
363 if (!fCFManager1->CheckEventCuts(AliCFManager::kEvtRecCuts,myESD))
364 {
365 AliWarning("Event does not pass multiplicity cuts"); return;
366 }
367
368 //make event
ef4799a7 369 if (fRPType == "Global") {
7d27a354 370 fFlowEvent = new AliFlowEvent(myESD,fCFManager1,fCFManager2);
ef4799a7 371 }
a0241c3a 372 else if (fRPType == "TPCOnly") {
7d27a354 373 fFlowEvent = new AliFlowEvent(myESD,fCFManager2,kFALSE);
cd755f77 374 }
a0241c3a 375 else if (fRPType == "TPCHybrid") {
7d27a354 376 fFlowEvent = new AliFlowEvent(myESD,fCFManager2,kTRUE);
cd755f77 377 }
ef4799a7 378 else if (fRPType == "Tracklet"){
7d27a354 379 fFlowEvent = new AliFlowEvent(myESD,myTracklets,fCFManager2);
ef4799a7 380 }
44e060e0 381 else if (fRPType == "FMD"){
dd60b476 382 TList* FMDdata = dynamic_cast<TList*>(GetInputData(availableINslot++));
383 if(!FMDdata) {
384 cout<<" No FMDdata "<<endl;
385 return;
386 }
387 TH2F* histFMD = dynamic_cast<TH2F*>(FMDdata->FindObject("dNdetadphiHistogramTrVtx"));
388 if (!histFMD) {
389 cout<< "No histFMD"<<endl;
390 return;
391 }
7d27a354 392 fFlowEvent = new AliFlowEvent(myESD,histFMD,fCFManager2);
44e060e0 393 }
333ce021 394 else if (fRPType == "PMD"){
7d27a354 395 fFlowEvent = new AliFlowEvent(myESD,pmdtracks,fCFManager2);
333ce021 396 }
5104aa35 397 else return;
44e060e0 398
ef4799a7 399 // if monte carlo event get reaction plane from monte carlo (depends on generator)
7d27a354 400 if (mcEvent && mcEvent->GenEventHeader()) fFlowEvent->SetMCReactionPlaneAngle(mcEvent);
5104aa35 401 //set reference multiplicity, TODO: maybe move it to the constructor?
7d27a354 402 fFlowEvent->SetReferenceMultiplicity(AliESDtrackCuts::GetReferenceMultiplicity(myESD,kTRUE));
1c1d4332 403 }
ef4799a7 404
940a5ed1 405 // Make the FlowEvent for ESD input combined with MC info
406 else if (fAnalysisType == "ESDMCkineESD" || fAnalysisType == "ESDMCkineMC" )
407 {
408 if (!(fCFManager1&&fCFManager2))
409 {
77111ee6 410 AliError("ERROR: No pointer to correction framework cuts! ");
940a5ed1 411 return;
412 }
413 if (!myESD)
414 {
77111ee6 415 AliError("ERROR: ESD not available");
940a5ed1 416 return;
417 }
77111ee6 418 AliInfo(Form("There are %d tracks in this event", fInputEvent->GetNumberOfTracks()));
940a5ed1 419
420 if (!mcEvent)
421 {
77111ee6 422 AliError("ERROR: Could not retrieve MC event");
940a5ed1 423 return;
424 }
1c1d4332 425
6d7734d2 426 fCFManager1->SetMCEventInfo(mcEvent);
427 fCFManager2->SetMCEventInfo(mcEvent);
1c1d4332 428
77111ee6 429 //check multiplicity
430 if (!fCFManager1->CheckEventCuts(AliCFManager::kEvtRecCuts,myESD))
431 {
432 AliWarning("Event does not pass multiplicity cuts"); return;
433 }
434
435 //make event
940a5ed1 436 if (fAnalysisType == "ESDMCkineESD")
437 {
7d27a354 438 fFlowEvent = new AliFlowEvent(myESD, mcEvent, AliFlowEvent::kESDkine, fCFManager1, fCFManager2 );
940a5ed1 439 }
440 else if (fAnalysisType == "ESDMCkineMC")
441 {
7d27a354 442 fFlowEvent = new AliFlowEvent(myESD, mcEvent, AliFlowEvent::kMCkine, fCFManager1, fCFManager2 );
1c1d4332 443 }
7d27a354 444 if (!fFlowEvent) return;
85d2ee8d 445 // if monte carlo event get reaction plane from monte carlo (depends on generator)
7d27a354 446 if (mcEvent && mcEvent->GenEventHeader()) fFlowEvent->SetMCReactionPlaneAngle(mcEvent);
85d2ee8d 447 //set reference multiplicity, TODO: maybe move it to the constructor?
7d27a354 448 fFlowEvent->SetReferenceMultiplicity(AliESDtrackCuts::GetReferenceMultiplicity(myESD,kTRUE));
1c1d4332 449 }
940a5ed1 450 // Make the FlowEventSimple for AOD input
451 else if (fAnalysisType == "AOD")
452 {
453 if (!myAOD)
454 {
77111ee6 455 AliError("ERROR: AOD not available");
940a5ed1 456 return;
457 }
ade93aa4 458 AliInfo(Form("AOD has %d tracks", myAOD->GetNumberOfTracks()));
7d27a354 459 fFlowEvent = new AliFlowEvent(myAOD);
1c1d4332 460 }
461
6e214c87 462 //inject candidates
463 if(fLoadCandidates) {
464 TObjArray* Candidates = dynamic_cast<TObjArray*>(GetInputData(availableINslot++));
41dc4195 465 //if(Candidates->GetEntriesFast())
466 //printf("I received %d candidates\n",Candidates->GetEntriesFast());
422c61c7 467 if (Candidates)
468 {
41dc4195 469 for(int iCand=0; iCand!=Candidates->GetEntriesFast(); ++iCand ) {
470 AliFlowCandidateTrack *cand = dynamic_cast<AliFlowCandidateTrack*>(Candidates->At(iCand));
422c61c7 471 if (!cand) continue;
41dc4195 472 cand->SetForPOISelection(kTRUE);
473 cand->SetForRPSelection(kFALSE);
474 //printf(" Ⱶ Checking at candidate %d with %d daughters\n",iCand,cand->GetNDaughters());
475 for(int iDau=0; iDau!=cand->GetNDaughters(); ++iDau) {
476 //printf(" Ⱶ Daughter %d with fID %d", iDau, cand->GetIDDaughter(iDau) );
7d27a354 477 for(int iRPs=0; iRPs!=fFlowEvent->NumberOfTracks(); ++iRPs ) {
478 AliFlowTrack *iRP = dynamic_cast<AliFlowTrack*>(fFlowEvent->GetTrack( iRPs ));
41dc4195 479 if (!iRP) continue;
480 if( !iRP->InRPSelection() )
481 continue;
482 if( cand->GetIDDaughter(iDau) == iRP->GetID() ) {
483 //printf(" was in RP set");
484 cand->SetDaughter( iDau, iRP );
485 //temporarily untagging all daugters
486 iRP->SetForRPSelection(kFALSE);
487 }
488 }
489 //printf("\n");
490 }
7d27a354 491 fFlowEvent->AddTrack(cand);
422c61c7 492 }
6e214c87 493 }
494 }
495
7d27a354 496 if (!fFlowEvent) return; //shuts up coverity
a0241c3a 497
77111ee6 498 //check final event cuts
7d27a354 499 Int_t mult = fFlowEvent->NumberOfTracks();
ade93aa4 500 AliInfo(Form("FlowEvent has %i tracks",mult));
501 if (mult<fMinMult || mult>fMaxMult)
77111ee6 502 {
503 AliWarning("FlowEvent cut on multiplicity"); return;
504 }
940a5ed1 505
f6f8c3fc 506 //define dead zone
7d27a354 507 fFlowEvent->DefineDeadZone(fExcludedEtaMin, fExcludedEtaMax, fExcludedPhiMin, fExcludedPhiMax );
f6f8c3fc 508
509
54089829 510 //////////////////////////////////////////////////////////////////////////////
511 ///////////////////////////AFTERBURNER
512 if (fAfterburnerOn)
513 {
514 //if reaction plane not set from elsewhere randomize it before adding flow
7d27a354 515 if (!fFlowEvent->IsSetMCReactionPlaneAngle())
516 fFlowEvent->SetMCReactionPlaneAngle(gRandom->Uniform(0.0,TMath::TwoPi()));
54089829 517
7d27a354 518 fFlowEvent->AddFlow(fV1,fV2,fV3,fV4,fV5); //add flow
519 fFlowEvent->CloneTracks(fNonFlowNumberOfTrackClones); //add nonflow by cloning tracks
54089829 520 }
521 //////////////////////////////////////////////////////////////////////////////
522
ef4799a7 523 //tag subEvents
7d27a354 524 fFlowEvent->TagSubeventsInEta(fMinA,fMaxA,fMinB,fMaxB);
940a5ed1 525
46bec39c 526 //fListHistos->Print();
7d27a354 527 //fOutputFile->WriteObject(fFlowEvent,"myFlowEventSimple");
528 PostData(1,fFlowEvent);
940a5ed1 529}
1c1d4332 530
531//________________________________________________________________________
940a5ed1 532void AliAnalysisTaskFlowEvent::Terminate(Option_t *)
1c1d4332 533{
534 // Called once at the end of the query -- do not call in case of CAF
1c1d4332 535}
489fdf79 536