1 /*************************************************************************
2 * Copyright(c) 1998-2008, ALICE Experiment at CERN, All rights reserved. *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
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 **************************************************************************/
16 /**************************************
17 * analysis task for mixed harmomics *
19 * authors: Naomi van der Kolk *
22 * (snelling@nikhef.nl) *
25 * ***********************************/
30 class AliAnalysisTaskSE;
32 #include "Riostream.h"
33 #include "AliFlowEventSimple.h"
34 #include "AliAnalysisTaskMixedHarmonics.h"
35 #include "AliFlowAnalysisWithMixedHarmonics.h"
39 ClassImp(AliAnalysisTaskMixedHarmonics)
41 //================================================================================================================
43 AliAnalysisTaskMixedHarmonics::AliAnalysisTaskMixedHarmonics(const char *name, Bool_t useParticleWeights):
44 AliAnalysisTaskSE(name),
49 fNoOfMultipicityBins(100),
50 fMultipicityBinWidth(1.),
52 fOppositeChargesPOI(kFALSE),
53 fEvaluateDifferential3pCorrelator(kFALSE),
54 fCorrectForDetectorEffects(kFALSE),
55 fPrintOnTheScreen(kTRUE),
56 fCalculateVsM(kFALSE),
57 fShowBinLabelsVsM(kFALSE),
58 fUseParticleWeights(useParticleWeights),
59 fUsePhiWeights(kFALSE),
60 fUsePtWeights(kFALSE),
61 fUseEtaWeights(kFALSE),
65 cout<<"AliAnalysisTaskMixedHarmonics::AliAnalysisTaskMixedHarmonics(const char *name, Bool_t useParticleWeights)"<<endl;
67 // Define input and output slots here
68 // Input slot #0 works with an AliFlowEventSimple
69 DefineInput(0, AliFlowEventSimple::Class());
70 // Input slot #1 is needed for the weights input file:
71 if(useParticleWeights)
73 DefineInput(1, TList::Class());
75 // Output slot #0 is reserved
76 // Output slot #1 writes into a TList container
77 DefineOutput(1, TList::Class());
80 AliAnalysisTaskMixedHarmonics::AliAnalysisTaskMixedHarmonics():
86 fNoOfMultipicityBins(0),
87 fMultipicityBinWidth(0),
89 fOppositeChargesPOI(kFALSE),
90 fEvaluateDifferential3pCorrelator(kFALSE),
91 fCorrectForDetectorEffects(kFALSE),
92 fPrintOnTheScreen(kFALSE),
93 fCalculateVsM(kFALSE),
94 fShowBinLabelsVsM(kFALSE),
95 fUseParticleWeights(kFALSE),
96 fUsePhiWeights(kFALSE),
97 fUsePtWeights(kFALSE),
98 fUseEtaWeights(kFALSE),
102 cout<<"AliAnalysisTaskMixedHarmonics::AliAnalysisTaskMixedHarmonics()"<<endl;
105 //================================================================================================================
107 void AliAnalysisTaskMixedHarmonics::UserCreateOutputObjects()
109 // Called at every worker node to initialize
110 cout<<"AliAnalysisTaskMixedHarmonics::UserCreateOutputObjects()"<<endl;
113 fMH = new AliFlowAnalysisWithMixedHarmonics();
116 fMH->SetHarmonic(fHarmonic);
117 fMH->SetNoOfMultipicityBins(fNoOfMultipicityBins);
118 fMH->SetMultipicityBinWidth(fMultipicityBinWidth);
119 fMH->SetMinMultiplicity(fMinMultiplicity);
120 fMH->SetOppositeChargesPOI(fOppositeChargesPOI);
121 fMH->SetEvaluateDifferential3pCorrelator(fEvaluateDifferential3pCorrelator);
122 fMH->SetCorrectForDetectorEffects(fCorrectForDetectorEffects);
123 fMH->SetPrintOnTheScreen(fPrintOnTheScreen);
124 fMH->SetCalculateVsM(fCalculateVsM);
125 fMH->SetShowBinLabelsVsM(fShowBinLabelsVsM);
126 if(fUseParticleWeights)
128 // Pass the flags to class:
129 if(fUsePhiWeights) fMH->SetUsePhiWeights(fUsePhiWeights);
130 if(fUsePtWeights) fMH->SetUsePtWeights(fUsePtWeights);
131 if(fUseEtaWeights) fMH->SetUseEtaWeights(fUseEtaWeights);
132 // Get data from input slot #1 which is used for weights:
135 fWeightsList = (TList*)GetInputData(1);
137 // Pass the list with weights to class:
138 if(fWeightsList) fMH->SetWeightsList(fWeightsList);
143 if(fMH->GetHistList())
145 fListHistos = fMH->GetHistList();
146 // fListHistos->Print();
149 Printf("ERROR: Could not retrieve histogram list (MH, Task::UserCreateOutputObjects()) !!!!");
152 PostData(1,fListHistos);
154 } // end of void AliAnalysisTaskMixedHarmonics::UserCreateOutputObjects()
156 //================================================================================================================
158 void AliAnalysisTaskMixedHarmonics::UserExec(Option_t *)
160 // main loop (called for each event)
161 fEvent = dynamic_cast<AliFlowEventSimple*>(GetInputData(0));
169 cout<<"WARNING: No input data (MH, Task::UserExec()) !!!!"<<endl;
173 PostData(1,fListHistos);
176 //================================================================================================================
178 void AliAnalysisTaskMixedHarmonics::Terminate(Option_t *)
180 //accessing the merged output list:
181 fListHistos = (TList*)GetOutputData(1);
183 fMH = new AliFlowAnalysisWithMixedHarmonics();
187 fMH->GetOutputHistograms(fListHistos);
189 PostData(1,fListHistos);
192 cout<<" WARNING: histogram list pointer is empty (MH, Task::Terminate()) !!!!"<<endl;
196 } // end of void AliAnalysisTaskMixedHarmonics::Terminate(Option_t *)