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 *f
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 fitting *
20 * authors: Naomi van der Kolk *
23 * (snelling@nikhef.nl) *
25 * (abilandzic@gmail.com) *
26 * ***********************************/
31 class AliAnalysisTaskSE;
33 #include "Riostream.h"
34 #include "AliFlowEventSimple.h"
35 #include "AliAnalysisTaskFittingQDistribution.h"
36 #include "AliFlowAnalysisWithFittingQDistribution.h"
41 ClassImp(AliAnalysisTaskFittingQDistribution)
43 //================================================================================================================
45 AliAnalysisTaskFittingQDistribution::AliAnalysisTaskFittingQDistribution(const char *name, Bool_t useWeights):
46 AliAnalysisTaskSE(name),
50 fBookOnlyBasicCCH(kTRUE),
51 fUseWeights(useWeights),
52 fUsePhiWeights(kFALSE),
58 fStoreqDistributionVsMult(kFALSE),
59 fqDistributionVsMult(NULL),
65 fMultiplicityIs(AliFlowCommonConstants::kRP)
68 //cout<<"AliAnalysisTaskFittingQDistribution::AliAnalysisTaskFittingQDistribution(const char *name, Bool_t useWeights)"<<endl;
70 // Define input and output slots here
71 // Input slot #0 works with an AliFlowEventSimple
72 DefineInput(0, AliFlowEventSimple::Class());
74 // Input slot #1 is needed for the weights input files
77 DefineInput(1, TList::Class());
79 // Output slot #0 is reserved
80 // Output slot #1 writes into a TList container
81 DefineOutput(1, TList::Class());
84 AliAnalysisTaskFittingQDistribution::AliAnalysisTaskFittingQDistribution():
89 fBookOnlyBasicCCH(kFALSE),
91 fUsePhiWeights(kFALSE),
97 fStoreqDistributionVsMult(kFALSE),
98 fqDistributionVsMult(NULL),
104 fMultiplicityIs(AliFlowCommonConstants::kRP)
107 //cout<<"AliAnalysisTaskFittingQDistribution::AliAnalysisTaskFittingQDistribution()"<<endl;
110 //================================================================================================================
112 void AliAnalysisTaskFittingQDistribution::UserCreateOutputObjects()
114 // Called at every worker node to initialize
115 cout<<"AliAnalysisTaskFittingQDistribution::UserCreateOutputObjects()"<<endl;
118 fFQD = new AliFlowAnalysisWithFittingQDistribution();
120 fFQD->SetBookOnlyBasicCCH(fBookOnlyBasicCCH);
124 // Pass the flags to class:
125 if(fUsePhiWeights) fFQD->SetUsePhiWeights(fUsePhiWeights);
126 // Get data from input slot #1 which is used for weights:
129 fListWeights = (TList*)GetInputData(1);
131 // Pass the list with weights to class:
132 if(fListWeights) fFQD->SetWeightsList(fListWeights);
134 fFQD->SetHarmonic(fHarmonic);
135 // Settings for q-distribution:
136 fFQD->SetqMin(fqMin);
137 fFQD->SetqMax(fqMax);
138 fFQD->SetqNbins(fqNbins);
139 fFQD->SetStoreqDistributionVsMult(fStoreqDistributionVsMult);
140 fFQD->SetqDistributionVsMult(fqDistributionVsMult);
141 fFQD->SetMinMult(fMinMult);
142 fFQD->SetMaxMult(fMaxMult);
143 fFQD->SetnBinsMult(fnBinsMult);
144 fFQD->SetDoFit(fDoFit);
145 fFQD->SetExactNoRPs(fExactNoRPs);
146 fFQD->SetMultiplicityIs(fMultiplicityIs);
150 if(fFQD->GetHistList())
152 fListHistos = fFQD->GetHistList();
153 //fListHistos->Print();
156 Printf("ERROR: Could not retrieve histogram list (FQD, Task::UserCreateOutputObjects()) !!!!");
159 PostData(1,fListHistos);
161 } // end of void AliAnalysisTaskFittingQDistribution::UserCreateOutputObjects()
163 //================================================================================================================
165 void AliAnalysisTaskFittingQDistribution::UserExec(Option_t *)
167 // Main loop (called for each event):
168 fEvent = dynamic_cast<AliFlowEventSimple*>(GetInputData(0));
170 // Fitting q-distribution:
176 cout<<"WARNING: No input data (FQD, Task::UserExec()) !!!!"<<endl;
179 PostData(1,fListHistos);
182 //================================================================================================================
184 void AliAnalysisTaskFittingQDistribution::Terminate(Option_t *)
186 //accessing the output list
187 fListHistos = (TList*)GetOutputData(1);
189 fFQD = new AliFlowAnalysisWithFittingQDistribution();
193 fFQD->GetOutputHistograms(fListHistos);
195 PostData(1,fListHistos);
198 cout<<" WARNING: histogram list pointer is empty (FQD, Task::Terminate()) !!!!"<<endl;
202 } // end of void AliAnalysisTaskFittingQDistribution::Terminate(Option_t *)
204 //================================================================================================================