class TFile;
class TH1;
class TH2;
+class TH2D;
class TProfile;
class TProfile2D;
--- /dev/null
+/*************************************************************************
+* Copyright(c) 1998-2008, ALICE Experiment at CERN, All rights reserved. *
+* *
+* Author: The ALICE Off-line Project. *
+* Contributors are mentioned in the code where appropriate. *
+* *
+* Permission to use, copy, modify and distribute this software and its *
+* documentation strictly for non-commercial purposes is hereby granted *
+* without fee, provided that the above copyright notice appears in all *
+* copies and that both the copyright notice and this permission notice *
+* appear in the supporting documentation. The authors make no claims *
+* about the suitability of this software for any purpose. It is *
+* provided "as is" without express or implied warranty. *
+**************************************************************************/
+
+/**************************************
+ * analysis task for mixed harmomics *
+ * *
+ * authors: Naomi van der Kolk *
+ * (kolk@nikhef.nl) *
+ * Raimond Snellings *
+ * (snelling@nikhef.nl) *
+ * Ante Bilandzic *
+ * (anteb@nikhef.nl) *
+ * ***********************************/
+
+class TFile;
+class TList;
+class AliAnalysisTaskSE;
+
+#include "Riostream.h"
+#include "AliFlowEventSimple.h"
+#include "AliAnalysisTaskMixedHarmonics.h"
+#include "AliFlowAnalysisWithMixedHarmonics.h"
+
+ClassImp(AliAnalysisTaskMixedHarmonics)
+
+//================================================================================================================
+
+AliAnalysisTaskMixedHarmonics::AliAnalysisTaskMixedHarmonics(const char *name, Bool_t useParticleWeights):
+AliAnalysisTaskSE(name),
+fEvent(NULL),
+fMH(NULL),
+fListHistos(NULL),
+fCorrelatorInteger(1),
+fNoOfMultipicityBins(10),
+fMultipicityBinWidth(2.),
+fMinMultiplicity(3.),
+fCorrectForDetectorEffects(kTRUE),
+fUseParticleWeights(useParticleWeights),
+fUsePhiWeights(kFALSE),
+fUsePtWeights(kFALSE),
+fUseEtaWeights(kFALSE),
+fWeightsList(NULL)
+{
+ // constructor
+ cout<<"AliAnalysisTaskMixedHarmonics::AliAnalysisTaskMixedHarmonics(const char *name, Bool_t useParticleWeights)"<<endl;
+
+ // Define input and output slots here
+ // Input slot #0 works with an AliFlowEventSimple
+ DefineInput(0, AliFlowEventSimple::Class());
+ // Input slot #1 is needed for the weights input file:
+ if(useParticleWeights)
+ {
+ DefineInput(1, TList::Class());
+ }
+ // Output slot #0 is reserved
+ // Output slot #1 writes into a TList container
+ DefineOutput(1, TList::Class());
+}
+
+AliAnalysisTaskMixedHarmonics::AliAnalysisTaskMixedHarmonics():
+AliAnalysisTaskSE(),
+fEvent(NULL),
+fMH(NULL),
+fListHistos(NULL),
+fCorrelatorInteger(0),
+fNoOfMultipicityBins(0),
+fMultipicityBinWidth(0),
+fMinMultiplicity(0),
+fCorrectForDetectorEffects(kFALSE),
+fUseParticleWeights(kFALSE),
+fUsePhiWeights(kFALSE),
+fUsePtWeights(kFALSE),
+fUseEtaWeights(kFALSE),
+fWeightsList(NULL)
+{
+ // Dummy constructor
+ cout<<"AliAnalysisTaskMixedHarmonics::AliAnalysisTaskMixedHarmonics()"<<endl;
+}
+
+//================================================================================================================
+
+void AliAnalysisTaskMixedHarmonics::UserCreateOutputObjects()
+{
+ // Called at every worker node to initialize
+ cout<<"AliAnalysisTaskMixedHarmonics::UserCreateOutputObjects()"<<endl;
+
+ // Analyser:
+ fMH = new AliFlowAnalysisWithMixedHarmonics();
+
+ // Common:
+ fMH->SetCorrelatorInteger(fCorrelatorInteger);
+ fMH->SetNoOfMultipicityBins(fNoOfMultipicityBins);
+ fMH->SetMultipicityBinWidth(fMultipicityBinWidth);
+ fMH->SetMinMultiplicity(fMinMultiplicity);
+ fMH->SetCorrectForDetectorEffects(fCorrectForDetectorEffects);
+ if(fUseParticleWeights)
+ {
+ // Pass the flags to class:
+ if(fUsePhiWeights) fMH->SetUsePhiWeights(fUsePhiWeights);
+ if(fUsePtWeights) fMH->SetUsePtWeights(fUsePtWeights);
+ if(fUseEtaWeights) fMH->SetUseEtaWeights(fUseEtaWeights);
+ // Get data from input slot #1 which is used for weights:
+ if(GetNinputs()==2)
+ {
+ fWeightsList = (TList*)GetInputData(1);
+ }
+ // Pass the list with weights to class:
+ if(fWeightsList) fMH->SetWeightsList(fWeightsList);
+ }
+
+ fMH->Init();
+
+ if(fMH->GetHistList())
+ {
+ fListHistos = fMH->GetHistList();
+ // fListHistos->Print();
+ } else
+ {
+ Printf("ERROR: Could not retrieve histogram list (MH, Task::UserCreateOutputObjects()) !!!!");
+ }
+
+} // end of void AliAnalysisTaskMixedHarmonics::UserCreateOutputObjects()
+
+//================================================================================================================
+
+void AliAnalysisTaskMixedHarmonics::UserExec(Option_t *)
+{
+ // main loop (called for each event)
+ fEvent = dynamic_cast<AliFlowEventSimple*>(GetInputData(0));
+
+ // Mixed Harmonics:
+ if(fEvent)
+ {
+ fMH->Make(fEvent);
+ } else
+ {
+ cout<<"WARNING: No input data (MH, Task::UserExec()) !!!!"<<endl;
+ cout<<endl;
+ }
+
+ PostData(1,fListHistos);
+}
+
+//================================================================================================================
+
+void AliAnalysisTaskMixedHarmonics::Terminate(Option_t *)
+{
+ //accessing the merged output list:
+ fListHistos = (TList*)GetOutputData(1);
+
+ fMH = new AliFlowAnalysisWithMixedHarmonics();
+
+ if(fListHistos)
+ {
+ fMH->GetOutputHistograms(fListHistos);
+ fMH->Finish();
+ PostData(1,fListHistos);
+ } else
+ {
+ cout<<" WARNING: histogram list pointer is empty (MH, Task::Terminate()) !!!!"<<endl;
+ cout<<endl;
+ }
+
+} // end of void AliAnalysisTaskMixedHarmonics::Terminate(Option_t *)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
--- /dev/null
+/*
+ * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved.
+ * See cxx source for full Copyright notice
+ * $Id$
+ */
+
+/**************************************
+ * analysis task for mixed harmomics *
+ * *
+ * authors: Naomi van der Kolk *
+ * (kolk@nikhef.nl) *
+ * Raimond Snellings *
+ * (snelling@nikhef.nl) *
+ * Ante Bilandzic *
+ * (anteb@nikhef.nl) *
+ * ***********************************/
+
+#ifndef ALIANALYSISTASKMIXEDHARMONICS_H
+#define ALIANALYSISTASKMIXEDHARMONICS_H
+
+#include "TString.h"
+#include "AliAnalysisTaskSE.h"
+
+class TList;
+class AliFlowEventSimple;
+class AliFlowAnalysisWithMixedHarmonics;
+
+//================================================================================================================
+
+class AliAnalysisTaskMixedHarmonics : public AliAnalysisTaskSE{
+ public:
+ AliAnalysisTaskMixedHarmonics();
+ AliAnalysisTaskMixedHarmonics(const char *name, Bool_t useParticleWeights=kFALSE);
+ virtual ~AliAnalysisTaskMixedHarmonics(){};
+
+ virtual void UserCreateOutputObjects();
+ virtual void UserExec(Option_t *option);
+ virtual void Terminate(Option_t *);
+
+ // common:
+ void SetCorrelatorInteger(Int_t const ci) {this->fCorrelatorInteger = ci;};
+ Int_t GetCorrelatorInteger() const {return this->fCorrelatorInteger;};
+ void SetNoOfMultipicityBins(Int_t const nomb) {this->fNoOfMultipicityBins = nomb;};
+ Int_t GetNoOfMultipicityBins() const {return this->fNoOfMultipicityBins;};
+ void SetMultipicityBinWidth(Double_t const mbw) {this->fMultipicityBinWidth = mbw;};
+ Double_t GetMultipicityBinWidth() const {return this->fMultipicityBinWidth;};
+ void SetMinMultiplicity(Double_t const mm) {this->fMinMultiplicity = mm;};
+ Double_t GetMinMultiplicity() const {return this->fMinMultiplicity;};
+ void SetCorrectForDetectorEffects(Bool_t const cfde) {this->fCorrectForDetectorEffects = cfde;};
+ Bool_t GetCorrectForDetectorEffects() const {return this->fCorrectForDetectorEffects;};
+ // particle weights:
+ void SetUsePhiWeights(Bool_t const uPhiW) {this->fUsePhiWeights = uPhiW;};
+ Bool_t GetUsePhiWeights() const {return this->fUsePhiWeights;};
+ void SetUsePtWeights(Bool_t const uPtW) {this->fUsePtWeights = uPtW;};
+ Bool_t GetUsePtWeights() const {return this->fUsePtWeights;};
+ void SetUseEtaWeights(Bool_t const uEtaW) {this->fUseEtaWeights = uEtaW;};
+ Bool_t GetUseEtaWeights() const {return this->fUseEtaWeights;};
+
+ private:
+ AliAnalysisTaskMixedHarmonics(const AliAnalysisTaskMixedHarmonics& aatmh);
+ AliAnalysisTaskMixedHarmonics& operator=(const AliAnalysisTaskMixedHarmonics& aatmh);
+
+ AliFlowEventSimple *fEvent; // the input event
+ AliFlowAnalysisWithMixedHarmonics *fMH; // mixed harmonics object
+ TList *fListHistos; // collection of output
+ // common:
+ Int_t fCorrelatorInteger; // integer n in cos[n(2phi1-phi2-phi3)]
+ Int_t fNoOfMultipicityBins; // number of multiplicity bins
+ Double_t fMultipicityBinWidth; // width of multiplicity bin
+ Double_t fMinMultiplicity; // minimal multiplicity
+ Bool_t fCorrectForDetectorEffects; // correct 3-p correlator for detector effects
+ // particle weights:
+ Bool_t fUseParticleWeights; // use any particle weights
+ Bool_t fUsePhiWeights; // use phi weights
+ Bool_t fUsePtWeights; // use pt weights
+ Bool_t fUseEtaWeights; // use eta weights
+ TList *fWeightsList; // list with weights
+
+ ClassDef(AliAnalysisTaskMixedHarmonics, 0);
+};
+
+//================================================================================================================
+
+#endif
+
+
+
+
+
+
+
+
+
+
+
--- /dev/null
+/*************************************************************************
+* Copyright(c) 1998-2008, ALICE Experiment at CERN, All rights reserved. *
+* *
+* Author: The ALICE Off-line Project. *
+* Contributors are mentioned in the code where appropriate. *
+* *
+* Permission to use, copy, modify and distribute this software and its *
+* documentation strictly for non-commercial purposes is hereby granted *
+* without fee, provided that the above copyright notice appears in all *
+* copies and that both the copyright notice and this permission notice *
+* appear in the supporting documentation. The authors make no claims *
+* about the suitability of this software for any purpose. It is *
+* provided "as is" without express or implied warranty. *
+**************************************************************************/
+
+/**********************************
+ * analysis task for nested loops *
+ * *
+ * authors: Naomi van der Kolk *
+ * (kolk@nikhef.nl) *
+ * Raimond Snellings *
+ * (snelling@nikhef.nl) *
+ * Ante Bilandzic *
+ * (anteb@nikhef.nl) *
+ * *******************************/
+
+class TFile;
+class TList;
+class AliAnalysisTaskSE;
+
+#include "Riostream.h"
+#include "AliFlowEventSimple.h"
+#include "AliAnalysisTaskNestedLoops.h"
+#include "AliFlowAnalysisWithNestedLoops.h"
+
+ClassImp(AliAnalysisTaskNestedLoops)
+
+//================================================================================================================
+
+AliAnalysisTaskNestedLoops::AliAnalysisTaskNestedLoops(const char *name, Bool_t useParticleWeights):
+AliAnalysisTaskSE(name),
+fEvent(NULL),
+fNL(NULL),
+fListHistos(NULL),
+fUseParticleWeights(useParticleWeights),
+fUsePhiWeights(kFALSE),
+fUsePtWeights(kFALSE),
+fUseEtaWeights(kFALSE),
+fWeightsList(NULL)
+{
+ // constructor
+ cout<<"AliAnalysisTaskNestedLoops::AliAnalysisTaskNestedLoops(const char *name, Bool_t useParticleWeights)"<<endl;
+
+ // Define input and output slots here
+ // Input slot #0 works with an AliFlowEventSimple
+ DefineInput(0, AliFlowEventSimple::Class());
+ // Input slot #1 is needed for the weights input file:
+ if(useParticleWeights)
+ {
+ DefineInput(1, TList::Class());
+ }
+ // Output slot #0 is reserved
+ // Output slot #1 writes into a TList container
+ DefineOutput(1, TList::Class());
+}
+
+AliAnalysisTaskNestedLoops::AliAnalysisTaskNestedLoops():
+AliAnalysisTaskSE(),
+fEvent(NULL),
+fNL(NULL),
+fListHistos(NULL),
+fUseParticleWeights(kFALSE),
+fUsePhiWeights(kFALSE),
+fUsePtWeights(kFALSE),
+fUseEtaWeights(kFALSE),
+fWeightsList(NULL)
+{
+ // Dummy constructor
+ cout<<"AliAnalysisTaskNestedLoops::AliAnalysisTaskNestedLoops()"<<endl;
+}
+
+//================================================================================================================
+
+void AliAnalysisTaskNestedLoops::UserCreateOutputObjects()
+{
+ // Called at every worker node to initialize
+ cout<<"AliAnalysisTaskNestedLoops::UserCreateOutputObjects()"<<endl;
+
+ // Analyser:
+ fNL = new AliFlowAnalysisWithNestedLoops();
+
+ if(fUseParticleWeights)
+ {
+ // Pass the flags to class:
+ if(fUsePhiWeights) fNL->SetUsePhiWeights(fUsePhiWeights);
+ if(fUsePtWeights) fNL->SetUsePtWeights(fUsePtWeights);
+ if(fUseEtaWeights) fNL->SetUseEtaWeights(fUseEtaWeights);
+ // Get data from input slot #1 which is used for weights:
+ if(GetNinputs()==2)
+ {
+ fWeightsList = (TList*)GetInputData(1);
+ }
+ // Pass the list with weights to class:
+ if(fWeightsList) fNL->SetWeightsList(fWeightsList);
+ }
+
+ fNL->Init();
+
+ if(fNL->GetHistList())
+ {
+ fListHistos = fNL->GetHistList();
+ // fListHistos->Print();
+ } else
+ {
+ Printf("ERROR: Could not retrieve histogram list (NL, Task::UserCreateOutputObjects()) !!!!");
+ }
+
+} // end of void AliAnalysisTaskNestedLoops::UserCreateOutputObjects()
+
+//================================================================================================================
+
+void AliAnalysisTaskNestedLoops::UserExec(Option_t *)
+{
+ // main loop (called for each event)
+ fEvent = dynamic_cast<AliFlowEventSimple*>(GetInputData(0));
+
+ // Nested Loops:
+ if(fEvent)
+ {
+ fNL->Make(fEvent);
+ } else
+ {
+ cout<<"WARNING: No input data (NL, Task::UserExec()) !!!!"<<endl;
+ cout<<endl;
+ }
+
+ PostData(1,fListHistos);
+}
+
+//================================================================================================================
+
+void AliAnalysisTaskNestedLoops::Terminate(Option_t *)
+{
+ //accessing the merged output list:
+ fListHistos = (TList*)GetOutputData(1);
+
+ fNL = new AliFlowAnalysisWithNestedLoops();
+
+ if(fListHistos)
+ {
+ fNL->GetOutputHistograms(fListHistos);
+ fNL->Finish();
+ PostData(1,fListHistos);
+ } else
+ {
+ cout<<" WARNING: histogram list pointer is empty (NL, Task::Terminate()) !!!!"<<endl;
+ cout<<endl;
+ }
+
+} // end of void AliAnalysisTaskNestedLoops::Terminate(Option_t *)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
--- /dev/null
+/*
+ * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved.
+ * See cxx source for full Copyright notice
+ * $Id$
+ */
+
+/**********************************
+ * analysis task for nested loops *
+ * *
+ * authors: Naomi van der Kolk *
+ * (kolk@nikhef.nl) *
+ * Raimond Snellings *
+ * (snelling@nikhef.nl) *
+ * Ante Bilandzic *
+ * (anteb@nikhef.nl) *
+ * *******************************/
+
+#ifndef ALIANALYSISTASKNESTEDLOOPS_H
+#define ALIANALYSISTASKNESTEDLOOPS_H
+
+#include "TString.h"
+#include "AliAnalysisTaskSE.h"
+
+class TList;
+class AliFlowEventSimple;
+class AliFlowAnalysisWithNestedLoops;
+
+//================================================================================================================
+
+class AliAnalysisTaskNestedLoops : public AliAnalysisTaskSE{
+ public:
+ AliAnalysisTaskNestedLoops();
+ AliAnalysisTaskNestedLoops(const char *name, Bool_t useParticleWeights=kFALSE);
+ virtual ~AliAnalysisTaskNestedLoops(){};
+
+ virtual void UserCreateOutputObjects();
+ virtual void UserExec(Option_t *option);
+ virtual void Terminate(Option_t *);
+
+ // particle weights:
+ void SetUsePhiWeights(Bool_t const uPhiW) {this->fUsePhiWeights = uPhiW;};
+ Bool_t GetUsePhiWeights() const {return this->fUsePhiWeights;};
+ void SetUsePtWeights(Bool_t const uPtW) {this->fUsePtWeights = uPtW;};
+ Bool_t GetUsePtWeights() const {return this->fUsePtWeights;};
+ void SetUseEtaWeights(Bool_t const uEtaW) {this->fUseEtaWeights = uEtaW;};
+ Bool_t GetUseEtaWeights() const {return this->fUseEtaWeights;};
+
+ private:
+ AliAnalysisTaskNestedLoops(const AliAnalysisTaskNestedLoops& aatmh);
+ AliAnalysisTaskNestedLoops& operator=(const AliAnalysisTaskNestedLoops& aatmh);
+
+ AliFlowEventSimple *fEvent; // the input event
+ AliFlowAnalysisWithNestedLoops *fNL; // nested loops object
+ TList *fListHistos; // collection of output
+ // particle weights:
+ Bool_t fUseParticleWeights; // use any particle weights
+ Bool_t fUsePhiWeights; // use phi weights
+ Bool_t fUsePtWeights; // use pt weights
+ Bool_t fUseEtaWeights; // use eta weights
+ TList *fWeightsList; // list with weights
+
+ ClassDef(AliAnalysisTaskNestedLoops, 0);
+};
+
+//================================================================================================================
+
+#endif
+
+
+
+
+
+
+
+
+
+
+
Bool_t GFC = METHODS[6];
Bool_t QC = METHODS[7];
Bool_t FQD = METHODS[8];
- Bool_t MCEP = METHODS[9];
-
+ Bool_t MCEP = METHODS[9];
+ Bool_t MH = METHODS[10];
+ Bool_t NL = METHODS[11];
//for using weights
Bool_t useWeights = WEIGHTS[0] || WEIGHTS[1] || WEIGHTS[2];
if (useWeights) cout<<"Weights are used"<<endl;
AliAnalysisTaskMCEventPlane *taskMCEP = new AliAnalysisTaskMCEventPlane("TaskMCEventPlane");
mgr->AddTask(taskMCEP);
}
-
+ if (MH){
+ AliAnalysisTaskMixedHarmonics *taskMH = new AliAnalysisTaskMixedHarmonics("TaskMixedHarmonics",useWeights);
+ taskMH->SetCorrelatorInteger(1);
+ taskMH->SetNoOfMultipicityBins(10);
+ taskMH->SetMultipicityBinWidth(2);
+ taskMH->SetMinMultiplicity(3);
+ taskMH->SetCorrectForDetectorEffects(kTRUE);
+ //taskMH->SetUsePhiWeights(WEIGHTS[0]);
+ //taskMH->SetUsePtWeights(WEIGHTS[1]);
+ //taskMH->SetUseEtaWeights(WEIGHTS[2]);
+ mgr->AddTask(taskMH);
+ }
+ if (NL){
+ AliAnalysisTaskNestedLoops *taskNL = new AliAnalysisTaskNestedLoops("TaskNestedLoops",useWeights);
+ //taskNL->SetUsePhiWeights(WEIGHTS[0]);
+ //taskNL->SetUsePtWeights(WEIGHTS[1]);
+ //taskNL->SetUseEtaWeights(WEIGHTS[2]);
+ mgr->AddTask(taskNL);
+ }
+
// Create the output container for the data produced by the task
// Connect to the input and output containers
//===========================================================================
mgr->ConnectInput(taskMCEP,0,coutputFE);
mgr->ConnectOutput(taskMCEP,0,coutputMCEP);
}
-
+ if(MH) {
+ TString outputMH = AliAnalysisManager::GetCommonFileName();
+ outputMH += ":outputMHanalysis";
+ outputMH += type;
+
+ AliAnalysisDataContainer *coutputMH = mgr->CreateContainer("cobjMH", TList::Class(),AliAnalysisManager::kOutputContainer,outputMH);
+ mgr->ConnectInput(taskMH,0,coutputFE);
+ mgr->ConnectOutput(taskMH,1,coutputMH);
+ //if (useWeights) {
+ // mgr->ConnectInput(taskMH,1,cinputWeights);
+ // cinputWeights->SetData(weightsList);
+ //}
+ }
+ if(NL) {
+ TString outputNL = AliAnalysisManager::GetCommonFileName();
+ outputNL += ":outputNLanalysis";
+ outputNL += type;
+
+ AliAnalysisDataContainer *coutputNL = mgr->CreateContainer("cobjNL", TList::Class(),AliAnalysisManager::kOutputContainer,outputNL);
+ mgr->ConnectInput(taskNL,0,coutputFE);
+ mgr->ConnectOutput(taskNL,1,coutputNL);
+ //if (useWeights) {
+ // mgr->ConnectInput(taskNL,1,cinputWeights);
+ // cinputWeights->SetData(weightsList);
+ //}
+ }
// Return analysis task
//===========================================================================
Bool_t LYZ2SUM = kFALSE; // Lee Yang Zeroes using sum generating function (second pass differential v)
Bool_t LYZ2PROD = kFALSE; // Lee Yang Zeroes using product generating function (second pass differential v)
Bool_t LYZEP = kFALSE; // Lee Yang Zeroes Event plane using sum generating function (gives eventplane + weight)
+Bool_t MH = kTRUE; // azimuthal correlators in mixed harmonics
+Bool_t NL = kFALSE; // nested loops (for instance distribution of phi1-phi2 for all distinct pairs)
-Bool_t METHODS[] = {SP,LYZ1SUM,LYZ1PROD,LYZ2SUM,LYZ2PROD,LYZEP,GFC,QC,FQD,MCEP};
+Bool_t METHODS[] = {SP,LYZ1SUM,LYZ1PROD,LYZ2SUM,LYZ2PROD,LYZEP,GFC,QC,FQD,MCEP,MH,NL};
// Analysis type can be ESD, AOD, MC, ESDMC0, ESDMC1
const TString type = "ESD";
#pragma link C++ class AliAnalysisTaskFittingQDistribution+;
#pragma link C++ class AliAnalysisTaskFlowEvent+;
#pragma link C++ class AliAnalysisTaskFlowEventforRP+;
+#pragma link C++ class AliAnalysisTaskMixedHarmonics+;
+#pragma link C++ class AliAnalysisTaskNestedLoops+;
#endif
FLOW/AliFlowTasks/AliAnalysisTaskLeeYangZeros.cxx \
FLOW/AliFlowTasks/AliAnalysisTaskFittingQDistribution.cxx \
FLOW/AliFlowTasks/AliAnalysisTaskFlowEvent.cxx \
- FLOW/AliFlowTasks/AliAnalysisTaskFlowEventforRP.cxx
+ FLOW/AliFlowTasks/AliAnalysisTaskFlowEventforRP.cxx \
+ FLOW/AliFlowTasks/AliAnalysisTaskMixedHarmonics.cxx \
+ FLOW/AliFlowTasks/AliAnalysisTaskNestedLoops.cxx
HDRS= $(SRCS:.cxx=.h)