// RUN SETTINGS
// Flow analysis method can be:(set to kTRUE or kFALSE)
-Bool_t SP = kTRUE;
-Bool_t LYZ1SUM = kTRUE;
-Bool_t LYZ1PROD = kTRUE;
-Bool_t LYZ2SUM = kFALSE;
-Bool_t LYZ2PROD = kFALSE;
-Bool_t LYZEP = kFALSE;
-Bool_t GFC = kTRUE;
-Bool_t QC = kTRUE;
-Bool_t FQD = kFALSE;
-Bool_t MCEP = kFALSE; //not for pp
+Bool_t MCEP = kTRUE; // correlation with Monte Carlo reaction plane
+Bool_t SP = kTRUE; // scalar product method (similar to eventplane method)
+Bool_t GFC = kTRUE; // cumulants based on generating function
+Bool_t QC = kTRUE; // cumulants using Q vectors
+Bool_t FQD = kTRUE; // fit of the distribution of the Q vector (only integrated v)
+Bool_t LYZ1SUM = kTRUE; // Lee Yang Zeroes using sum generating function (integrated v)
+Bool_t LYZ1PROD = kTRUE; // Lee Yang Zeroes using product generating function (integrated v)
+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 = kTRUE; // 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
+// Analysis type can be ESD, AOD, MC, ESDMCkineESD, ESDMCkineMC
const TString type = "ESD";
// Boolean to fill/not fill the QA histograms
Bool_t WEIGHTS[] = {kFALSE,kFALSE,kFALSE}; //Phi, v'(pt), v'(eta)
-void runFlowTask(Int_t mode=mLocal, Int_t nRuns = 40,
- //const Char_t* dataDir="/data/alice2/kolk/PP/LHC09a4/81119", Int_t offset = 0)
- const Char_t* dataDir="/data/alice2/kolk/Therminator_midcentral", Int_t offset = 0)
-//void runFlowTask(Int_t mode=mPROOF, Int_t nRuns = 10000,
- // const Char_t* dataDir="/COMMON/COMMON/LHC09a4_run8158X", Int_t offset = 0)
- //const Char_t* dataDir="/PWG2/akisiel/Therminator_c2030", Int_t offset=0)
+//void runFlowTask(Int_t mode=mLocal, Int_t nRuns = 2,
+//Bool_t DATA = kTRUE, const Char_t* dataDir="/data/alice2/kolk/PP/data/LHC09d/104892/test", Int_t offset = 0)
+// Bool_t DATA = kFALSE, const Char_t* dataDir="/data/alice2/kolk/PP/LHC09d10/104873", Int_t offset = 0)
+
+void runFlowTask(Int_t mode = mPROOF, Int_t nRuns = 50000000,
+ //Bool_t DATA = kFALSE, const Char_t* dataDir="/PWG2/akisiel/Therminator_midcentral_ESD", Int_t offset=0)
+ //Bool_t DATA = kFALSE, const Char_t* dataDir="/PWG2/akisiel/LHC10d6_0.9TeV_EPOS_12502X", Int_t offset=0)
+ //Bool_t DATA = kFALSE, const Char_t* dataDir="/alice/sim/LHC10d2_117048", Int_t offset=0) //phojet 7 TeV
+ //Bool_t DATA = kTRUE, const Char_t* dataDir="/alice/data/LHC09d_000104792_p6", Int_t offset=0) //data 0.9 TeV
+ Bool_t DATA = kFALSE, const Char_t* dataDir="/PWG4/morsch/HIJING_CENT_4EV", Int_t offset=0) //hijing Pb Pb pilot
+
+//void runFlowTask(Int_t mode = mGRID, Bool_t DATA = kTRUE)
{
TStopwatch timer;
timer.Start();
+ CrossCheckUserSettings(DATA);
+
LoadLibraries(mode);
+
+ if (mode == mGRID) {
+ // Create and configure the alien handler plugin
+ gROOT->LoadMacro("CreateAlienHandler.C");
+ AliAnalysisGrid *alienHandler = CreateAlienHandler();
+ if (!alienHandler) return;
+ }
- if (mode==mLocal || mode == mLocalPAR || mode == mGRID) {
+ if (mode==mLocal || mode == mLocalPAR) {
if (type!="AOD") { TChain* chain = CreateESDChain(dataDir, nRuns, offset);}
else { TChain* chain = CreateAODChain(dataDir, nRuns, offset);}
}
//____________________________________________//
// Make the analysis manager
AliAnalysisManager *mgr = new AliAnalysisManager("FlowAnalysisManager");
-
+
+ if (mode == mGRID) {
+ // Connect plug-in to the analysis manager
+ mgr->SetGridHandler(alienHandler);
+ }
+
if (type == "ESD"){
AliVEventHandler* esdH = new AliESDInputHandler;
mgr->SetInputEventHandler(esdH);
+ if (MCEP) {
+ AliMCEventHandler *mc = new AliMCEventHandler();
+ mgr->SetMCtruthEventHandler(mc);
+ }
}
if (type == "AOD"){
AliVEventHandler* aodH = new AliAODInputHandler;
mgr->SetInputEventHandler(aodH);
+ if (MCEP) {
+ AliMCEventHandler *mc = new AliMCEventHandler();
+ mgr->SetMCtruthEventHandler(mc);
+ }
}
- if (type == "MC" || type == "ESDMC0" || type == "ESDMC1"){
+ if (type == "MC" || type == "ESDMCkineESD" || type == "ESDMCkineMC"){
AliVEventHandler* esdH = new AliESDInputHandler;
mgr->SetInputEventHandler(esdH);
AliMCEventHandler *mc = new AliMCEventHandler();
- mgr->SetMCtruthEventHandler(mc); }
-
-
+ mgr->SetMCtruthEventHandler(mc);
+ }
+
//____________________________________________//
- // Load the tasks
+ // Load the analysis task
gROOT->LoadMacro("AddTaskFlow.C");
AliAnalysisTaskFlowEvent* taskFE = AddTaskFlow(type,METHODS,QA,WEIGHTS);
-
+
+
+ // Task to check the offline trigger
+ if (mode == mLocal || mode == mGRID) {
+ gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskPhysicsSelection.C"); }
+ else if (mode == mPROOF || mode == mLocalPAR) {
+ gROOT->LoadMacro("AddTaskPhysicsSelection.C"); }
+ AliPhysicsSelectionTask* physicsSelTask = AddTaskPhysicsSelection();
+ if (!DATA) {physicsSelTask->GetPhysicsSelection()->SetAnalyzeMC();}
+
+
+ // Enable debug printouts
+ mgr->SetDebugLevel(2);
+
+
//____________________________________________//
// Run the analysis
if (!mgr->InitAnalysis()) return;
mgr->PrintStatus();
- if (mode==mLocal || mode == mLocalPAR) {
+ if (mode == mLocal || mode == mLocalPAR) {
mgr->StartAnalysis("local",chain);
}
- else if (mode==mPROOF) {
+ else if (mode == mPROOF) {
mgr->StartAnalysis("proof",dataDir,nRuns,offset);
}
- else if (mode==mGRID) {
- mgr->StartAnalysis("local",chain);
+ else if (mode == mGRID) {
+ mgr->StartAnalysis("grid");
}
timer.Stop();
}
+void CrossCheckUserSettings(Bool_t bData)
+{
+ // Check in this method if the user settings make sense.
+
+ if(MCEP==kTRUE && bData==kTRUE)
+ {
+ cout<<endl;
+ cout<<"WARNING: In real datasets there is no Monte Carlo information available !!!!"<<endl;
+ cout<<" Set for real data analysis DATA = kTRUE and MCEP = kFALSE in the macro."<<endl;
+ cout<<endl;
+ exit(0);
+ }
+
+} // end of void CrossCheckUserSettings()
void LoadLibraries(const anaModes mode) {
//--------------------------------------
// Load the needed libraries most of them already loaded by aliroot
//--------------------------------------
- gSystem->Load("libTree.so");
- gSystem->Load("libGeom.so");
- gSystem->Load("libVMC.so");
- gSystem->Load("libXMLIO.so");
- gSystem->Load("libPhysics.so");
+ gSystem->Load("libTree");
+ gSystem->Load("libGeom");
+ gSystem->Load("libVMC");
+ gSystem->Load("libXMLIO");
+ gSystem->Load("libPhysics");
//----------------------------------------------------------
// >>>>>>>>>>> Local mode <<<<<<<<<<<<<<
//----------------------------------------------------------
- if (mode==mLocal) {
+ if (mode==mLocal || mode==mGRID) {
//--------------------------------------------------------
// If you want to use already compiled libraries
// in the aliroot distribution
gSystem->Load("libAOD");
gSystem->Load("libANALYSIS");
gSystem->Load("libANALYSISalice");
- gSystem->Load("libCORRFW.so");
- cerr<<"libCORRFW.so loaded..."<<endl;
- gSystem->Load("libPWG2flowCommon.so");
- cerr<<"libPWG2flowCommon.so loaded..."<<endl;
- gSystem->Load("libPWG2flowTasks.so");
- cerr<<"libPWG2flowTasks.so loaded..."<<endl;
+ gSystem->Load("libCORRFW");
+ gSystem->Load("libPWG2forward");
+ if (mode==mLocal) {
+ gSystem->Load("libPWG2flowCommon");
+ cerr<<"libPWG2flowCommon loaded..."<<endl;
+ gSystem->Load("libPWG2flowTasks");
+ cerr<<"libPWG2flowTasks loaded..."<<endl;
+ }
+ if (mode==mGRID) {
+ SetupPar("PWG2flowCommon");
+ cerr<<"PWG2flowCommon.par loaded..."<<endl;
+ SetupPar("PWG2flowTasks");
+ cerr<<"PWG2flowTasks.par loaded..."<<endl;
+ }
}
- else if (mode == mLocalPAR || mode == mGRID) {
+ else if (mode == mLocalPAR) {
//--------------------------------------------------------
//If you want to use root and par files from aliroot
//--------------------------------------------------------
SetupPar("AOD");
SetupPar("ANALYSIS");
SetupPar("ANALYSISalice");
- SetupPar("PWG2AOD");
- SetupPar("CORRFW");
+ SetupPar("CORRFW");
SetupPar("PWG2flowCommon");
cerr<<"PWG2flowCommon.par loaded..."<<endl;
SetupPar("PWG2flowTasks");
//---------------------------------------------------------
else if (mode==mPROOF) {
//
-
+ //gEnv->SetValue("XSec.GSI.DelegProxy","2");
// set to debug root versus if needed
- // TProof::Mgr("alicecaf")->SetROOTVersion("v5-21-01-alice_dbg");
- // TProof::Mgr("alicecaf")->SetROOTVersion("v5-21-01-alice");
-
+ //TProof::Mgr("alicecaf")->SetROOTVersion("v5-24-00a_dbg");
+ //TProof::Mgr("alicecaf")->SetROOTVersion("v5-24-00a");
+ //TProof::Reset("proof://snelling@alicecaf.cern.ch");
// Connect to proof
- // Put appropriate username here
- // TProof::Reset("proof://snelling@alicecaf.cern.ch");
printf("*** Connect to PROOF ***\n");
- // TProof::Open("abilandz@alicecaf.cern.ch");
- // TProof::Open("nkolk@alicecaf.cern.ch");
- TProof::Open("snelling@localhost");
+ gEnv->SetValue("XSec.GSI.DelegProxy","2");
+ // Put appropriate username here
+ //TProof::Open("abilandz@alicecaf.cern.ch");
+ //TProof::Open("nkolk@alicecaf.cern.ch");
+ //TProof::Open("snelling@localhost");
+ TProof::Open("alice-caf.cern.ch");
+ //TProof::Open("skaf.saske.sk");
+ //TProof::Open("prf000-iep-grid.saske.sk");
+ //Info("runSKAF.C","Loading libs on proof (may take while, around 1 min) ...");
+ // list the data available
+ //gProof->ShowDataSets("/*/*");
+ //gProof->ShowDataSets("/alice/sim/"); //for MC Data
+ //gProof->ShowDataSets("/alice/data/"); //for REAL Data
+
+ // Clear the Packages
+
+ gProof->ClearPackage("STEERBase.par");
+ gProof->ClearPackage("ESD.par");
+ gProof->ClearPackage("AOD.par");
+ gProof->ClearPackage("ANALYSIS.par");
+ gProof->ClearPackage("ANALYSISalice.par");
+ gProof->ClearPackage("CORRFW.par");
+
+ gProof->ClearPackage("PWG2flowCommon");
+ gProof->ClearPackage("PWG2flowTasks");
- // Enable the STEERBase Package
- // gProof->ClearPackage("STEERBase.par");
+ // Upload the Packages
gProof->UploadPackage("STEERBase.par");
+ gProof->UploadPackage("ESD.par");
+ gProof->UploadPackage("AOD.par");
+
+ gProof->UploadPackage("ANALYSIS.par");
+ gProof->UploadPackage("ANALYSISalice.par");
+ gProof->UploadPackage("CORRFW.par");
+ gProof->UploadPackage("PWG2flowCommon.par");
+ gProof->UploadPackage("PWG2flowTasks.par");
+
+ // Enable the Packages
+ // The global package
+ //gProof->EnablePackage("aliroot_v4-19-05-AN",kTRUE);
+ // Or separate
+
gProof->EnablePackage("STEERBase");
- // Enable the ESD Package
- // gProof->ClearPackage("ESD.par");
- gProof->UploadPackage("ESD.par");
gProof->EnablePackage("ESD");
- // Enable the AOD Package
- // gProof->ClearPackage("AOD.par");
- gProof->UploadPackage("AOD.par");
gProof->EnablePackage("AOD");
- // Enable the Analysis Package
- // gProof->ClearPackage("ANALYSIS.par");
- gProof->UploadPackage("ANALYSIS.par");
+
+ // Always needed
gProof->EnablePackage("ANALYSIS");
- // Enable the Analysis Package alice
- // gProof->ClearPackage("ANALYSISalice.par");
- gProof->UploadPackage("ANALYSISalice.par");
gProof->EnablePackage("ANALYSISalice");
- // Load the PWG2 AOD
- // gProof->ClearPackage("PWG2AOD.par");
- gProof->UploadPackage("PWG2AOD.par");
- gProof->EnablePackage("PWG2AOD");
- // Enable the Correction Framework
- // gProof->ClearPackage("CORRFW.par");
- gProof->UploadPackage("CORRFW.par");
gProof->EnablePackage("CORRFW");
- // Enable Flow Analysis
- // gProof->ClearPackage("PWG2flowCommon");
- gProof->UploadPackage("PWG2flowCommon.par");
gProof->EnablePackage("PWG2flowCommon");
- // gProof->ClearPackage("PWG2flowTasks");
- gProof->UploadPackage("PWG2flowTasks.par");
gProof->EnablePackage("PWG2flowTasks");
- //
+
+ // Show enables Packages
gProof->ShowEnabledPackages();
}