fSpk(NULL),
f3pCorrelatorEBE(NULL),
fNonIsotropicTermsEBE(NULL),
+fProfileList(NULL),
f3pCorrelatorPro(NULL),
fNonIsotropicTermsPro(NULL),
f3pCorrelatorVsMPro(NULL),
fNonIsotropicTermsVsMHist(NULL)
{
// Constructor.
- \r // Base list to hold all output objects:
+ // Base list to hold all output objects:
fHistList = new TList();
fHistListName = new TString("cobjMH");
fHistList->SetName(fHistListName->Data());
// List to hold histograms with phi, pt and eta weights:
fWeightsList = new TList();
+ // List to hold all all-event profiles:
+ fProfileList = new TList();
+
// List to hold objects with final results:
fResultsList = new TList();
{
// Get pointers to all objects saved in the output file.
- // a) Get pointers for common control histograms.\r
+ // a) Get pointers for common control histograms.
if(outputListHistos)
{
this->SetHistList(outputListHistos);
cout<<endl;
exit(0);
}
+ this->GetPointersForBaseHistograms();
this->GetPointersForCommonHistograms();
+ this->GetPointersForAllEventProfiles();
this->GetPointersForResultsHistograms();
} else
{
//================================================================================================================
+void AliFlowAnalysisWithMixedHarmonics::GetPointersForBaseHistograms()
+{
+ // Get pointers to base histograms.
+
+ TString analysisSettingsName = "fAnalysisSettings";
+ TProfile *analysisSettings = dynamic_cast<TProfile*>(fHistList->FindObject(analysisSettingsName.Data()));
+ if(analysisSettings)
+ {
+ this->SetAnalysisSettings(analysisSettings);
+ } else
+ {
+ cout<<endl;
+ cout<<" WARNING (MH): analysisSettings is NULL in AFAWMH::GPFBH() !!!!"<<endl;
+ cout<<endl;
+ exit(0);
+ }
+
+} // end of void AliFlowAnalysisWithMixedHarmonics::GetPointersForBaseHistograms()
+
+//================================================================================================================
+
void AliFlowAnalysisWithMixedHarmonics::GetPointersForCommonHistograms()
{
// Get pointers to common control histograms.
//================================================================================================================
+void AliFlowAnalysisWithMixedHarmonics::GetPointersForAllEventProfiles()
+{
+ // Get pointers to histograms holding final results.
+
+ TList *profileList = NULL;
+ profileList = dynamic_cast<TList*>(fHistList->FindObject("Profiles"));
+ if(!profileList)
+ {
+ cout<<"WARNING: profileList is NULL in AFAWMH::GPFAEP() !!!!"<<endl;
+ exit(0);
+ }
+
+ TString s3pCorrelatorProName = "f3pCorrelatorPro";
+ TProfile *h3pCorrelatorPro = dynamic_cast<TProfile*>(profileList->FindObject(s3pCorrelatorProName.Data()));
+ if(h3pCorrelatorPro)
+ {
+ this->Set3pCorrelatorPro(h3pCorrelatorPro);
+ }
+ TString s3pCorrelatorVsMProName = "f3pCorrelatorVsMPro";
+ TProfile *h3pCorrelatorVsMPro = dynamic_cast<TProfile*>(profileList->FindObject(s3pCorrelatorVsMProName.Data()));
+ if(h3pCorrelatorVsMPro)
+ {
+ this->Set3pCorrelatorVsMPro(h3pCorrelatorVsMPro);
+ }
+ TString nonIsotropicTermsProName = "fNonIsotropicTermsPro";
+ TProfile *nonIsotropicTermsPro = dynamic_cast<TProfile*>(profileList->FindObject(nonIsotropicTermsProName.Data()));
+ if(nonIsotropicTermsPro)
+ {
+ this->SetNonIsotropicTermsPro(nonIsotropicTermsPro);
+ }
+ TString nonIsotropicTermsVsMProName = "fNonIsotropicTermsVsMPro";
+ TProfile2D *nonIsotropicTermsVsMPro = dynamic_cast<TProfile2D*>(profileList->FindObject(nonIsotropicTermsVsMProName.Data()));
+ if(nonIsotropicTermsVsMPro)
+ {
+ this->SetNonIsotropicTermsVsMPro(nonIsotropicTermsVsMPro);
+ }
+} // end of void AliFlowAnalysisWithMixedHarmonics::GetPointersForAllEventProfiles()
+
+//================================================================================================================
+
void AliFlowAnalysisWithMixedHarmonics::GetPointersForResultsHistograms()
{
// Get pointers to histograms holding final results.
{
this->Set3pCorrelatorHist(h3pCorrelatorHist);
}
+ TString s3pCorrelatorVsMHistName = "f3pCorrelatorVsMHist";
+ TH1D *h3pCorrelatorVsMHist = dynamic_cast<TH1D*>(resultsList->FindObject(s3pCorrelatorVsMHistName.Data()));
+ if(h3pCorrelatorVsMHist)
+ {
+ this->Set3pCorrelatorVsMHist(h3pCorrelatorVsMHist);
+ }
TString detectorBiasHistName = "fDetectorBiasHist";
TH1D *detectorBiasHist = dynamic_cast<TH1D*>(resultsList->FindObject(detectorBiasHistName.Data()));
if(detectorBiasHist)
{
this->SetDetectorBiasHist(detectorBiasHist);
}
+ TString detectorBiasVsMHistName = "fDetectorBiasVsMHist";
+ TH1D *detectorBiasVsMHist = dynamic_cast<TH1D*>(resultsList->FindObject(detectorBiasVsMHistName.Data()));
+ if(detectorBiasVsMHist)
+ {
+ this->SetDetectorBiasVsMHist(detectorBiasVsMHist);
+ }
TString nonIsotropicTermsHistName = "fNonIsotropicTermsHist";
TH1D *nonIsotropicTermsHist = dynamic_cast<TH1D*>(resultsList->FindObject(nonIsotropicTermsHistName.Data()));
if(nonIsotropicTermsHist)
{
this->SetNonIsotropicTermsHist(nonIsotropicTermsHist);
+ }
+ TString nonIsotropicTermsVsMHistName = "fNonIsotropicTermsVsMHist";
+ TH2D *nonIsotropicTermsVsMHist = dynamic_cast<TH2D*>(resultsList->FindObject(nonIsotropicTermsVsMHistName.Data()));
+ if(nonIsotropicTermsVsMHist)
+ {
+ this->SetNonIsotropicTermsVsMHist(nonIsotropicTermsVsMHist);
}
-
+
} // end of void AliFlowAnalysisWithMixedHarmonics::GetPointersForResultsHistograms()
//================================================================================================================
fWeightsList->SetName("Weights");
fWeightsList->SetOwner(kTRUE);
fHistList->Add(fWeightsList);
+ // Profiles:
+ fProfileList->SetName("Profiles");
+ fProfileList->SetOwner(kTRUE);
+ fHistList->Add(fProfileList);
// Results:
fResultsList->SetName("Results");
fResultsList->SetOwner(kTRUE);
// 3-p correlator <<cos[n(2phi1-phi2-phi3)]>> for all events (with wrong error):
TString s3pCorrelatorProName = "f3pCorrelatorPro";
f3pCorrelatorPro = new TProfile(s3pCorrelatorProName.Data(),"<<cos[n(2#phi_{1}-#phi_{2}-#phi_{3})]>> for all events (errors are wrong here!)",1,0,1,"s");
- fHistList->Add(f3pCorrelatorPro);
+ fProfileList->Add(f3pCorrelatorPro);
// 3-p correlator <<cos[n(2phi1-phi2-phi3)]>> for all events (with correct error):
TString s3pCorrelatorHistName = "f3pCorrelatorHist";
f3pCorrelatorHist = new TH1D(s3pCorrelatorHistName.Data(),"<<cos[n(2#phi_{1}-#phi_{2}-#phi_{3})]>> for all events",1,0,1);
fNonIsotropicTermsPro->GetXaxis()->SetBinLabel(8,"sin(n(2#phi_{1}-#phi_{2}))");
fNonIsotropicTermsPro->GetXaxis()->SetBinLabel(9,"cos(n(#phi_{1}-#phi_{2}-#phi_{3}))");
fNonIsotropicTermsPro->GetXaxis()->SetBinLabel(10,"sin(n(#phi_{1}-#phi_{2}-#phi_{3})");
- fHistList->Add(fNonIsotropicTermsPro);
+ fProfileList->Add(fNonIsotropicTermsPro);
// Correction terms for non-uniform acceptance to <cos[n(2phi1-phi2-phi3)]> for all events (with correct errors):
TString nonIsotropicTermsHistName = "fNonIsotropicTermsHist";
fNonIsotropicTermsHist = new TH1D(nonIsotropicTermsHistName.Data(),"Non-isotropic terms for all events",10,0,10);
f3pCorrelatorVsMPro->GetXaxis()->SetBinLabel(b,Form("%d #leq M < %d",(Int_t)(fMinMultiplicity+(b-1)*fMultipicityBinWidth),(Int_t)(fMinMultiplicity+b*fMultipicityBinWidth)));
}
f3pCorrelatorVsMPro->GetXaxis()->SetBinLabel(fNoOfMultipicityBins+1,Form(" M #geq %d",(Int_t)(fMinMultiplicity+fNoOfMultipicityBins*fMultipicityBinWidth)));
- fHistList->Add(f3pCorrelatorVsMPro);
+ fProfileList->Add(f3pCorrelatorVsMPro);
// 3-p correlator <<cos[n(2phi1-phi2-phi3)]>> for all events (with correct error):
TString s3pCorrelatorVsMHistName = "f3pCorrelatorVsMHist";
f3pCorrelatorVsMHist = new TH1D(s3pCorrelatorVsMHistName.Data(),"<<cos[n(2#phi_{1}-#phi_{2}-#phi_{3})]>> vs M for all events",fNoOfMultipicityBins+1,0,fNoOfMultipicityBins+1);
fNonIsotropicTermsVsMPro->GetYaxis()->SetBinLabel(b,Form("%d #leq M < %d",(Int_t)(fMinMultiplicity+(b-1)*fMultipicityBinWidth),(Int_t)(fMinMultiplicity+b*fMultipicityBinWidth)));
}
fNonIsotropicTermsVsMPro->GetYaxis()->SetBinLabel(fNoOfMultipicityBins+1,Form(" M #geq %d",(Int_t)(fMinMultiplicity+fNoOfMultipicityBins*fMultipicityBinWidth)));
- fHistList->Add(fNonIsotropicTermsVsMPro);
+ fProfileList->Add(fNonIsotropicTermsVsMPro);
// Correction terms for non-uniform acceptance to <cos[n(2phi1-phi2-phi3)]> for all events (with correct errors):
TString nonIsotropicTermsVsMHistName = "fNonIsotropicTermsVsMHist";
fNonIsotropicTermsVsMHist = new TH2D(nonIsotropicTermsVsMHistName.Data(),"Non-isotropic terms for all events vs M ",10,0,10,fNoOfMultipicityBins+1,0,fNoOfMultipicityBins+1);
void AliFlowAnalysisWithMixedHarmonics::CheckPointersUsedInFinish()
{
// Check pointers used in method Finish().
-
+
+ if(!fAnalysisSettings)
+ {
+ cout<<endl;
+ cout<<" WARNING (MH): !fAnalysisSettings is NULL !!!!"<<endl;
+ cout<<endl;
+ exit(0);
+ }
+ if(!f3pCorrelatorPro)
+ {
+ cout<<endl;
+ cout<<" WARNING (MH): !f3pCorrelatorPro is NULL !!!!"<<endl;
+ cout<<endl;
+ exit(0);
+ }
+ if(!fNonIsotropicTermsPro)
+ {
+ cout<<endl;
+ cout<<" WARNING (MH): !fNonIsotropicTermsPro is NULL !!!!"<<endl;
+ cout<<endl;
+ exit(0);
+ }
+ if(!f3pCorrelatorVsMPro)
+ {
+ cout<<endl;
+ cout<<" WARNING (MH): !f3pCorrelatorVsMPro is NULL !!!!"<<endl;
+ cout<<endl;
+ exit(0);
+ }
+ if(!fNonIsotropicTermsVsMPro)
+ {
+ cout<<endl;
+ cout<<" WARNING (MH): !fNonIsotropicTermsVsMPro is NULL !!!!"<<endl;
+ cout<<endl;
+ exit(0);
+ }
+ if(!f3pCorrelatorHist)
+ {
+ cout<<endl;
+ cout<<" WARNING (MH): !f3pCorrelatorHist is NULL !!!!"<<endl;
+ cout<<endl;
+ exit(0);
+ }
+ if(!fNonIsotropicTermsHist)
+ {
+ cout<<endl;
+ cout<<" WARNING (MH): !fNonIsotropicTermsHist is NULL !!!!"<<endl;
+ cout<<endl;
+ exit(0);
+ }
+ if(!fDetectorBiasHist)
+ {
+ cout<<endl;
+ cout<<" WARNING (MH): !fDetectorBiasHist is NULL !!!!"<<endl;
+ cout<<endl;
+ exit(0);
+ }
+ if(!f3pCorrelatorVsMHist)
+ {
+ cout<<endl;
+ cout<<" WARNING (MH): !f3pCorrelatorVsMHist is NULL !!!!"<<endl;
+ cout<<endl;
+ exit(0);
+ }
+ if(!fNonIsotropicTermsVsMHist)
+ {
+ cout<<endl;
+ cout<<" WARNING (MH): !fNonIsotropicTermsVsMHist is NULL !!!!"<<endl;
+ cout<<endl;
+ exit(0);
+ }
+ if(!fDetectorBiasVsMHist)
+ {
+ cout<<endl;
+ cout<<" WARNING (MH): !fDetectorBiasVsMHist is NULL !!!!"<<endl;
+ cout<<endl;
+ exit(0);
+ }
+
} // end of AliFlowAnalysisWithMixedHarmonics::CheckPointersUsedInFinish()
//================================================================================================================
virtual void QuantifyBiasFromDetectorEffects();
// 4.) Method GetOutputHistograms and method called within it:
virtual void GetOutputHistograms(TList *outputListHistos);
+ virtual void GetPointersForBaseHistograms();
virtual void GetPointersForCommonHistograms();
+ virtual void GetPointersForAllEventProfiles();
virtual void GetPointersForResultsHistograms();
// 5.) Other methods:
virtual void WriteHistograms(TString outputFileName);
void SetAnalysisLabel(const char *al) {this->fAnalysisLabel->Append(*al);};
TString *GetAnalysisLabel() const {return this->fAnalysisLabel;};
void SetAnalysisSettings(TProfile* const as) {this->fAnalysisSettings = as;};
- TH1D* GetAnalysisSettings() const {return this->fAnalysisSettings;};
+ TProfile* GetAnalysisSettings() const {return this->fAnalysisSettings;};
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;};
TH1D* GetPtWeights() const {return this->fPtWeights;};
void SetEtaWeights(TH1D* const histEtaWeights) {this->fEtaWeights = histEtaWeights;};
TH1D* GetEtaWeights() const {return this->fEtaWeights;};
+ void SetProfileList(TList* const plist) {this->fProfileList = plist;}
+ TList* GetProfileList() const {return this->fProfileList;}
void Set3pCorrelatorPro(TProfile* const s3pPro) {this->f3pCorrelatorPro = s3pPro;};
TProfile* Get3pCorrelatorPro() const {return this->f3pCorrelatorPro;};
- void SetfNonIsotropicTermsPro(TProfile* const nitPro) {this->fNonIsotropicTermsPro = nitPro;};
+ void SetNonIsotropicTermsPro(TProfile* const nitPro) {this->fNonIsotropicTermsPro = nitPro;};
TProfile* GetNonIsotropicTermsPro() const {return this->fNonIsotropicTermsPro;};
- void Set3pCorrelatoVsMrPro(TProfile* const s3pVsMPro) {this->f3pCorrelatorVsMPro = s3pVsMPro;};
+ void Set3pCorrelatorVsMPro(TProfile* const s3pVsMPro) {this->f3pCorrelatorVsMPro = s3pVsMPro;};
TProfile* Get3pCorrelatorVsMPro() const {return this->f3pCorrelatorVsMPro;};
- void SetfNonIsotropicTermsVsMPro(TProfile2D* const nitVsMPro) {this->fNonIsotropicTermsVsMPro = nitVsMPro;};
+ void SetNonIsotropicTermsVsMPro(TProfile2D* const nitVsMPro) {this->fNonIsotropicTermsVsMPro = nitVsMPro;};
TProfile2D* GetNonIsotropicTermsVsMPro() const {return this->fNonIsotropicTermsVsMPro;};
void SetResultsList(TList* const rlist) {this->fResultsList = rlist;}
TList* GetResultsList() const {return this->fResultsList;}
TH1D *f3pCorrelatorEBE; // 3-p correlator <cos[n(2phi1-phi2-phi3)]> for single event
TH1D *fNonIsotropicTermsEBE; // correction terms to 3-p correlator <cos[n(2phi1-phi2-phi3)]> for single event
// 4.) Profiles:
+ TList *fProfileList; // list holding all all-event profiles
TProfile *f3pCorrelatorPro; // 3-p correlator <<cos[n(2phi1-phi2-phi3)]>> for all events (with wrong errors)
TProfile *fNonIsotropicTermsPro; // correction terms to 3-p correlator <cos[n(2phi1-phi2-phi3)]> for all events (with wrong errors)
TProfile *f3pCorrelatorVsMPro; // 3-p correlator <<cos[n(2phi1-phi2-phi3)]>> for all events (with wrong errors) versus multiplicity
#include "AliFlowAnalysisWithNestedLoops.h"
class TH1;
-class TList;\r
+class TList;
ClassImp(AliFlowAnalysisWithNestedLoops)
//================================================================================================================
fRelativeAngleDistribution(NULL)
{
// Constructor.
- \r // Base list to hold all output objects:
+ // Base list to hold all output objects:
fHistList = new TList();
fHistListName = new TString("cobjNL");
fHistList->SetName(fHistListName->Data());
} // end of for(Int_t i=0;i<nPrim;i++)
-} // end of AliFlowAnalysisWithNestedLoops::Make(AliFlowEventSimple* anEvent)\r
+} // end of AliFlowAnalysisWithNestedLoops::Make(AliFlowEventSimple* anEvent)
//================================================================================================================
void AliFlowAnalysisWithNestedLoops::Finish()
{
// Get pointers to all objects saved in the output file.
- // a) Get pointers for common control histograms.\r
+ // a) Get pointers for common control histograms.
if(outputListHistos)
{
this->SetHistList(outputListHistos);
if(commonHist8th) this->SetCommonHists8th(commonHist8th);
TString commonHistResults2ndOrderName = "AliFlowCommonHistResults2ndOrderQC";
commonHistResults2ndOrderName += fAnalysisLabel->Data();
- AliFlowCommonHistResults *commonHistRes2nd = dynamic_cast<AliFlowCommonHistResults*>\r (fHistList->FindObject(commonHistResults2ndOrderName.Data()));
+ AliFlowCommonHistResults *commonHistRes2nd = dynamic_cast<AliFlowCommonHistResults*> (fHistList->FindObject(commonHistResults2ndOrderName.Data()));
if(commonHistRes2nd) this->SetCommonHistsResults2nd(commonHistRes2nd);
TString commonHistResults4thOrderName = "AliFlowCommonHistResults4thOrderQC";
commonHistResults4thOrderName += fAnalysisLabel->Data();
Double_t dM111 = (*fSMpk)(2,1)-3.*(*fSMpk)(0,2)*(*fSMpk)(0,1)
+ 2.*(*fSMpk)(0,3); // dM111 = sum_{i,j,k=1,i!=j!=k}^M w_i w_j w_k
//..............................................................................................
- \r // 1-particle:
+ // 1-particle:
Double_t cosP1nW1 = 0.; // <<w1 cos(n*(phi1))>>
if(dMult>0 && (*fSMpk)(0,1) !=0.)
// Final output file name holding final results for large statistics sample:
TString outputFileName = "AnalysisResults.root";
- const Int_t nMethods = 10;
- TString method[nMethods] = {"MCEP","SP","GFC","QC","FQD","LYZ1SUM","LYZ1PROD","LYZ2SUM","LYZ2PROD","LYZEP"};
+ const Int_t nMethods = 12;
+ TString method[nMethods] = {"MCEP","SP","GFC","QC","FQD","LYZ1SUM","LYZ1PROD","LYZ2SUM","LYZ2PROD","LYZEP","MH","NL"};
// Load needed libraries:
LoadLibrariesRF(mode);
lyzep->Finish();
dirFile[i]->Add(list[i],kTRUE);
dirFile[i]->Write(dirFile[i]->GetName(),TObject::kSingleKey+TObject::kOverwrite);
+ }
+ // MH:
+ else if(list[i] && strcmp(list[i]->GetName(),"cobjMH")==0)
+ {
+ AliFlowAnalysisWithMixedHarmonics* mh = new AliFlowAnalysisWithMixedHarmonics();
+ mh->GetOutputHistograms(list[i]);
+ mh->Finish();
+ dirFile[i]->Add(list[i],kTRUE);
+ dirFile[i]->Write(dirFile[i]->GetName(),TObject::kSingleKey+TObject::kOverwrite);
+ }
+ // NL:
+ else if(list[i] && strcmp(list[i]->GetName(),"cobjNL")==0)
+ {
+ AliFlowAnalysisWithNestedLoops* nl = new AliFlowAnalysisWithNestedLoops();
+ nl->GetOutputHistograms(list[i]);
+ nl->Finish();
+ dirFile[i]->Add(list[i],kTRUE);
+ dirFile[i]->Write(dirFile[i]->GetName(),TObject::kSingleKey+TObject::kOverwrite);
}
} // End of for(Int_t i=0;i<nMethods;i++)
gROOT->LoadMacro("AliFlowCommon/AliFlowAnalysisWithCumulants.cxx+");
gROOT->LoadMacro("AliFlowCommon/AliFlowAnalysisWithQCumulants.cxx+");
gROOT->LoadMacro("AliFlowCommon/AliFlowAnalysisWithFittingQDistribution.cxx+");
-
+ gROOT->LoadMacro("AliFlowCommon/AliFlowAnalysisWithMixedHarmonics.cxx+");
+ gROOT->LoadMacro("AliFlowCommon/AliFlowAnalysisWithNestedLoops.cxx+");
+
cout << "finished loading macros!" << endl;
} // end of else if (mode==mLocalSource)
Bool_t GFC = kTRUE;
Bool_t QC = kTRUE;
Bool_t FQD = kTRUE;
+Bool_t MH = kTRUE;
+Bool_t NL = kFALSE;
Bool_t MCEP = kFALSE; //does not work yet 24/12/08
//--------------------------------------------------------------------------------------
AliFlowAnalysisWithLeeYangZeros *lyz2prod = NULL;
AliFlowAnalysisWithLYZEventPlane *lyzep = NULL;
AliFlowAnalysisWithScalarProduct *sp = NULL;
- AliFlowAnalysisWithMCEventPlane *mcep = NULL;
+ AliFlowAnalysisWithMCEventPlane *mcep = NULL;
+ AliFlowAnalysisWithMixedHarmonics *mh = NULL;
+ AliFlowAnalysisWithNestedLoops *nl = NULL;
//MCEP = monte carlo event plane
if (MCEP) {
//QC = Q-cumulants
if(QC) {
AliFlowAnalysisWithQCumulants* qc = new AliFlowAnalysisWithQCumulants();
- qc->Init();
if(listWithWeights) qc->SetWeightsList(listWithWeights);
if(usePhiWeights) qc->SetUsePhiWeights(usePhiWeights);
if(usePtWeights) qc->SetUsePtWeights(usePtWeights);
if(useEtaWeights) qc->SetUseEtaWeights(useEtaWeights);
+ qc->Init();
}
//GFC = Generating Function Cumulants
if(GFC) {
AliFlowAnalysisWithCumulants* gfc = new AliFlowAnalysisWithCumulants();
- gfc->Init();
if(listWithWeights) gfc->SetWeightsList(listWithWeights);
if(usePhiWeights) gfc->SetUsePhiWeights(usePhiWeights);
if(usePtWeights) gfc->SetUsePtWeights(usePtWeights);
if(useEtaWeights) gfc->SetUseEtaWeights(useEtaWeights);
+ gfc->Init();
}
//FQD = Fitting q-distribution
if(FQD) {
AliFlowAnalysisWithFittingQDistribution* fqd = new AliFlowAnalysisWithFittingQDistribution();
- fqd->Init();
if(listWithWeights) fqd->SetWeightsList(listWithWeights);
if(usePhiWeights) fqd->SetUsePhiWeights(usePhiWeights);
+ fqd->Init();
}
//SP = Scalar Product
if(SP) {
AliFlowAnalysisWithScalarProduct* sp = new AliFlowAnalysisWithScalarProduct();
+ if(usePhiWeights) sp->SetUsePhiWeights(usePhiWeights);
sp->Init();
}
}
}
}
+ // MH = Mixed Harmonics:
+ if(MH) {
+ AliFlowAnalysisWithMixedHarmonics* mh = new AliFlowAnalysisWithMixedHarmonics();
+ if(listWithWeights) mh->SetWeightsList(listWithWeights);
+ //if(usePhiWeights) mh->SetUsePhiWeights(usePhiWeights); // to be improved (enabled)
+ //if(usePtWeights) mh->SetUsePtWeights(usePtWeights); // to be improved (enabled)
+ //if(useEtaWeights) mh->SetUseEtaWeights(useEtaWeights); // to be improved (enabled)
+ mh->Init();
+ }
+ // NL = Nested Loops:
+ if(NL) {
+ AliFlowAnalysisWithNestedLoops* nl = new AliFlowAnalysisWithNestedLoops();
+ if(listWithWeights) nl->SetWeightsList(listWithWeights);
+ //if(usePhiWeights) nl->SetUsePhiWeights(usePhiWeights); // to be improved (enabled)
+ //if(usePtWeights) nl->SetUsePtWeights(usePtWeights); // to be improved (enabled)
+ //if(useEtaWeights) nl->SetUseEtaWeights(useEtaWeights); // to be improved (enabled)
+ nl->Init();
+ }
+
//------------------------------------------------------------------------
if(LYZ2SUM) lyz2sum->Make(fEvent);
if(LYZ2PROD)lyz2prod->Make(fEvent);
if(LYZEP) lyzep->Make(fEvent,ep);
- if(SP) sp->Make(fEvent);
+ if(SP) sp->Make(fEvent);
+ if(MH) mh->Make(fEvent);
+ if(NL) nl->Make(fEvent);
//-----------------------------------------------------------
fCount++;
//cout << "# " << fCount << " events processed" << endl;
TString outputFileName = "AnalysisResults.root";
TFile *outputFile = new TFile(outputFileName.Data(),"RECREATE");
// create a new file for each method wich will hold list with final results:
- const Int_t nMethods = 10;
- TString method[nMethods] = {"MCEP","SP","GFC","QC","FQD","LYZ1SUM","LYZ1PROD","LYZ2SUM","LYZ2PROD","LYZEP"};
+ const Int_t nMethods = 12;
+ TString method[nMethods] = {"MCEP","SP","GFC","QC","FQD","LYZ1SUM","LYZ1PROD","LYZ2SUM","LYZ2PROD","LYZEP","MH","NL"};
TDirectoryFile *dirFileFinal[nMethods] = {NULL};
TString fileNameMethod[nMethods];
for(Int_t i=0;i<nMethods;i++)
if(LYZ2SUM) {lyz2sum->Finish(); lyz2sum->WriteHistograms(dirFileFinal[7]);}
if(LYZ2PROD){lyz2prod->Finish();lyz2prod->WriteHistograms(dirFileFinal[8]);}
if(LYZEP) {lyzep->Finish(); lyzep->WriteHistograms(dirFileFinal[9]);}
+ if(MH) {mh->Finish(); mh->WriteHistograms(dirFileFinal[10]);}
+ if(NL) {nl->Finish(); nl->WriteHistograms(dirFileFinal[11]);}
//---------------------------------------------------------------------------------------
outputFile->Close();
gROOT->LoadMacro("AliFlowCommon/AliFlowAnalysisWithLeeYangZeros.cxx+");
gROOT->LoadMacro("AliFlowCommon/AliFlowAnalysisWithCumulants.cxx+");
gROOT->LoadMacro("AliFlowCommon/AliFlowAnalysisWithQCumulants.cxx+");
- gROOT->LoadMacro("AliFlowCommon/AliFlowAnalysisWithFittingQDistribution.cxx+");
+ gROOT->LoadMacro("AliFlowCommon/AliFlowAnalysisWithFittingQDistribution.cxx+");
+ gROOT->LoadMacro("AliFlowCommon/AliFlowAnalysisWithMixedHarmonics.cxx+");
+ gROOT->LoadMacro("AliFlowCommon/AliFlowAnalysisWithNestedLoops.cxx+");
// Class to fill the FlowEvent without aliroot dependence
// can be found in the directory FlowEventMakers
// In root inline compile
-
// Constants
gROOT->LoadMacro("AliFlowCommon/AliFlowCommonConstants.cxx+");
gROOT->LoadMacro("AliFlowCommon/AliFlowLYZConstants.cxx+");
gROOT->LoadMacro("AliFlowCommon/AliFlowAnalysisWithCumulants.cxx+");
gROOT->LoadMacro("AliFlowCommon/AliFlowAnalysisWithQCumulants.cxx+");
gROOT->LoadMacro("AliFlowCommon/AliFlowAnalysisWithFittingQDistribution.cxx+");
+ gROOT->LoadMacro("AliFlowCommon/AliFlowAnalysisWithMixedHarmonics.cxx+");
+ gROOT->LoadMacro("AliFlowCommon/AliFlowAnalysisWithNestedLoops.cxx+");
// Class to fill the FlowEvent on the fly (generate Monte Carlo events)
gROOT->LoadMacro("AliFlowCommon/AliFlowEventSimpleMakerOnTheFly.cxx+");