enum analysisModes {mLocal,mLocalPAR,mPROOF,mGrid,mGridPAR};
enum analysisTypes {mESD,mAOD,mMC,mMCESD};
//
class AliAnalysisGrid;
class AliAnalysisTaskBF;
class AliBalance;
//________________________________________________________________________//
void runBalanceFunctionInpp(Int_t mode = mLocal,
Int_t type = mAOD,
Bool_t DATA = kFALSE) {
// Time:
TStopwatch timer;
timer.Start();
//Check analysis mode
if((mode < 0) || (mode > 4)) {
Printf("Analysis mode not recognized!");
Printf("You can select out of 0: local, 1: local with par files, 2: proof, 3: grid, 4: grid with par files");
return;
}
//Check analysis type
if((type < 0) || (type > 3)) {
Printf("Analysis type not recognized!");
Printf("You can select out of 0: ESD, 1: AOD, 2: MC (stack), 3: MC (from the ESD)");
return;
}
// Load needed libraries:
LoadLibraries(mode);
// Create and configure the AliEn plug-in:
if(mode == mGrid || mode == mGridPAR) {
gROOT->LoadMacro("CreateAlienHandler.C");
AliAnalysisGrid *alienHandler = CreateAlienHandler(runListFileName);
if (!alienHandler) return;
}
// Chains:
if(mode == mLocal || mode == mLocalPAR) {
TChain* chain = 0x0;
if((type == mESD)||(type == mMCESD))
chain = new TChain("esdTree");
else if(type == mAOD)
chain = new TChain("aodTree");
else if(type == mMC)
chain = new TChain("TE");
TString filename;
for(Int_t i = 1; i < 20; i++) {
filename = "/data/alice2/pchrist/pp/LHC10c/0.9TeV/Data/";
filename += "Set"; filename += i;
if((type == mESD)||(type == mMCESD))
filename += "/AliESDs.root";
else if(type == mAOD)
filename += "/AliAOD.root";
else if(type == mMC)
filename += "/galice.root";
chain->Add(filename.Data());
}
}
//Proof
if(mode == mPROOF) {
gROOT->ProcessLine(Form(".include %s/include", gSystem->ExpandPathName("$ALICE_ROOT")));
}
// analysis manager
AliAnalysisManager* mgr = new AliAnalysisManager("balanceFunctionManager");
if(mode == mGrid || mode == mGridPAR)
mgr->SetGridHandler(alienHandler);
// input handler (ESD or AOD)
AliVEventHandler* inputH = NULL;
if((type == mESD)||(type == mMCESD))
inputH = new AliESDInputHandler();
else if(type == mAOD)
inputH = new AliAODInputHandler();
mgr->SetInputEventHandler(inputH);
// mc event handler
if((type == mMC) || (type == mMCESD)) {
AliMCEventHandler* mchandler = new AliMCEventHandler();
// Not reading track references
mchandler->SetReadTR(kFALSE);
mgr->SetMCtruthEventHandler(mchandler);
}
if(type != mAOD){
gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskPhysicsSelection.C");
AliPhysicsSelectionTask* physSelTask = AddTaskPhysicsSelection();
}
//Add the BF task (all centralities)
gROOT->LoadMacro("AddTaskBalanceFunctionInpp.C");
AddTaskBalanceFunctionInpp();
// enable debug printouts
mgr->SetDebugLevel(2);
mgr->SetUseProgressBar(1,100);
if (!mgr->InitAnalysis()) return;
mgr->PrintStatus();
// start analysis
if(mode == mLocal || mode == mLocalPAR)
mgr->StartAnalysis("local",chain);
else if(mode == mPROOF)
mgr->StartAnalysis("proof",dataDir,nRuns,offset);
else if(mode == mGrid || mode == mGridPAR)
mgr->StartAnalysis("grid");
// Print real and CPU time used for analysis:
timer.Stop();
timer.Print();
}
//=============================================================//
void LoadLibraries(const analysisModes mode) {
//--------------------------------------
// Load the needed libraries most of them already loaded by aliroot
//--------------------------------------
gSystem->Load("libCore.so");
gSystem->Load("libGeom.so");
gSystem->Load("libVMC.so");
gSystem->Load("libPhysics.so");
gSystem->Load("libTree.so");
//----------------------------------------------------------
// >>>>>>>>>>> Local mode <<<<<<<<<<<<<<
//----------------------------------------------------------
if (mode==mLocal || mode==mGrid || mode == mGridPAR) {
//--------------------------------------------------------
// If you want to use already compiled libraries
// in the aliroot distribution
//--------------------------------------------------------
gSystem->Load("libSTEERBase.so");
gSystem->Load("libESD.so");
gSystem->Load("libAOD.so");
gSystem->Load("libANALYSIS.so");
gSystem->Load("libANALYSISalice.so");
gSystem->Load("libEventMixing.so");
gSystem->Load("libPWGCFebye.so");
// Use AliRoot includes to compile our task
gROOT->ProcessLine(".include $ALICE_ROOT/include");
}
else if (mode == mLocalPAR) {
//--------------------------------------------------------
//If you want to use root and par files from aliroot
//--------------------------------------------------------
SetupPar("STEERBase");
SetupPar("ESD");
SetupPar("AOD");
SetupPar("ANALYSIS");
SetupPar("ANALYSISalice");
SetupPar("PWGCFebye");
}
//---------------------------------------------------------
// <<<<<<<<<< PROOF mode >>>>>>>>>>>>
//---------------------------------------------------------
else if (mode==mPROOF) {
// Connect to proof
printf("*** Connect to PROOF ***\n");
gEnv->SetValue("XSec.GSI.DelegProxy","2");
// Put appropriate username here
TProof::Open("alice-caf.cern.ch");
//TProof::Open("skaf.saske.sk");
//TProof::Open("prf000-iep-grid.saske.sk");
gProof->EnablePackage("VO_ALICE@AliRoot::v4-21-12-AN");
}
} // end of void LoadLibraries(const anaModes mode)
//======================================================================//
void SetupPar(char* pararchivename) {
//Load par files, create analysis libraries
//For testing, if par file already decompressed and modified
//classes then do not decompress.
TString cdir(Form("%s", gSystem->WorkingDirectory() )) ;
TString parpar(Form("%s.par", pararchivename)) ;
if ( gSystem->AccessPathName(parpar.Data()) ) {
gSystem->ChangeDirectory(gSystem->Getenv("ALICE_ROOT")) ;
TString processline(Form(".! make %s", parpar.Data())) ;
gROOT->ProcessLine(processline.Data()) ;
gSystem->ChangeDirectory(cdir) ;
processline = Form(".! mv /tmp/%s .", parpar.Data()) ;
gROOT->ProcessLine(processline.Data()) ;
}
if ( gSystem->AccessPathName(pararchivename) ) {
TString processline = Form(".! tar xvzf %s",parpar.Data()) ;
gROOT->ProcessLine(processline.Data());
}
TString ocwd = gSystem->WorkingDirectory();
gSystem->ChangeDirectory(pararchivename);
// check for BUILD.sh and execute
if (!gSystem->AccessPathName("PROOF-INF/BUILD.sh")) {
printf("*******************************\n");
printf("*** Building PAR archive ***\n");
cout<<pararchivename<<endl;
printf("*******************************\n");
if (gSystem->Exec("PROOF-INF/BUILD.sh")) {
Error("runProcess","Cannot Build the PAR Archive! - Abort!");
return -1;
}
}
// check for SETUP.C and execute
if (!gSystem->AccessPathName("PROOF-INF/SETUP.C")) {
printf("*******************************\n");
printf("*** Setup PAR archive ***\n");
cout<<pararchivename<<endl;
printf("*******************************\n");
gROOT->Macro("PROOF-INF/SETUP.C");
}
gSystem->ChangeDirectory(ocwd.Data());
printf("Current dir: %s\n", ocwd.Data());
} // end of void SetupPar(char* pararchivename)
runBalanceFunctionInpp.C:1 runBalanceFunctionInpp.C:2 runBalanceFunctionInpp.C:3 runBalanceFunctionInpp.C:4 runBalanceFunctionInpp.C:5 runBalanceFunctionInpp.C:6 runBalanceFunctionInpp.C:7 runBalanceFunctionInpp.C:8 runBalanceFunctionInpp.C:9 runBalanceFunctionInpp.C:10 runBalanceFunctionInpp.C:11 runBalanceFunctionInpp.C:12 runBalanceFunctionInpp.C:13 runBalanceFunctionInpp.C:14 runBalanceFunctionInpp.C:15 runBalanceFunctionInpp.C:16 runBalanceFunctionInpp.C:17 runBalanceFunctionInpp.C:18 runBalanceFunctionInpp.C:19 runBalanceFunctionInpp.C:20 runBalanceFunctionInpp.C:21 runBalanceFunctionInpp.C:22 runBalanceFunctionInpp.C:23 runBalanceFunctionInpp.C:24 runBalanceFunctionInpp.C:25 runBalanceFunctionInpp.C:26 runBalanceFunctionInpp.C:27 runBalanceFunctionInpp.C:28 runBalanceFunctionInpp.C:29 runBalanceFunctionInpp.C:30 runBalanceFunctionInpp.C:31 runBalanceFunctionInpp.C:32 runBalanceFunctionInpp.C:33 runBalanceFunctionInpp.C:34 runBalanceFunctionInpp.C:35 runBalanceFunctionInpp.C:36 runBalanceFunctionInpp.C:37 runBalanceFunctionInpp.C:38 runBalanceFunctionInpp.C:39 runBalanceFunctionInpp.C:40 runBalanceFunctionInpp.C:41 runBalanceFunctionInpp.C:42 runBalanceFunctionInpp.C:43 runBalanceFunctionInpp.C:44 runBalanceFunctionInpp.C:45 runBalanceFunctionInpp.C:46 runBalanceFunctionInpp.C:47 runBalanceFunctionInpp.C:48 runBalanceFunctionInpp.C:49 runBalanceFunctionInpp.C:50 runBalanceFunctionInpp.C:51 runBalanceFunctionInpp.C:52 runBalanceFunctionInpp.C:53 runBalanceFunctionInpp.C:54 runBalanceFunctionInpp.C:55 runBalanceFunctionInpp.C:56 runBalanceFunctionInpp.C:57 runBalanceFunctionInpp.C:58 runBalanceFunctionInpp.C:59 runBalanceFunctionInpp.C:60 runBalanceFunctionInpp.C:61 runBalanceFunctionInpp.C:62 runBalanceFunctionInpp.C:63 runBalanceFunctionInpp.C:64 runBalanceFunctionInpp.C:65 runBalanceFunctionInpp.C:66 runBalanceFunctionInpp.C:67 runBalanceFunctionInpp.C:68 runBalanceFunctionInpp.C:69 runBalanceFunctionInpp.C:70 runBalanceFunctionInpp.C:71 runBalanceFunctionInpp.C:72 runBalanceFunctionInpp.C:73 runBalanceFunctionInpp.C:74 runBalanceFunctionInpp.C:75 runBalanceFunctionInpp.C:76 runBalanceFunctionInpp.C:77 runBalanceFunctionInpp.C:78 runBalanceFunctionInpp.C:79 runBalanceFunctionInpp.C:80 runBalanceFunctionInpp.C:81 runBalanceFunctionInpp.C:82 runBalanceFunctionInpp.C:83 runBalanceFunctionInpp.C:84 runBalanceFunctionInpp.C:85 runBalanceFunctionInpp.C:86 runBalanceFunctionInpp.C:87 runBalanceFunctionInpp.C:88 runBalanceFunctionInpp.C:89 runBalanceFunctionInpp.C:90 runBalanceFunctionInpp.C:91 runBalanceFunctionInpp.C:92 runBalanceFunctionInpp.C:93 runBalanceFunctionInpp.C:94 runBalanceFunctionInpp.C:95 runBalanceFunctionInpp.C:96 runBalanceFunctionInpp.C:97 runBalanceFunctionInpp.C:98 runBalanceFunctionInpp.C:99 runBalanceFunctionInpp.C:100 runBalanceFunctionInpp.C:101 runBalanceFunctionInpp.C:102 runBalanceFunctionInpp.C:103 runBalanceFunctionInpp.C:104 runBalanceFunctionInpp.C:105 runBalanceFunctionInpp.C:106 runBalanceFunctionInpp.C:107 runBalanceFunctionInpp.C:108 runBalanceFunctionInpp.C:109 runBalanceFunctionInpp.C:110 runBalanceFunctionInpp.C:111 runBalanceFunctionInpp.C:112 runBalanceFunctionInpp.C:113 runBalanceFunctionInpp.C:114 runBalanceFunctionInpp.C:115 runBalanceFunctionInpp.C:116 runBalanceFunctionInpp.C:117 runBalanceFunctionInpp.C:118 runBalanceFunctionInpp.C:119 runBalanceFunctionInpp.C:120 runBalanceFunctionInpp.C:121 runBalanceFunctionInpp.C:122 runBalanceFunctionInpp.C:123 runBalanceFunctionInpp.C:124 runBalanceFunctionInpp.C:125 runBalanceFunctionInpp.C:126 runBalanceFunctionInpp.C:127 runBalanceFunctionInpp.C:128 runBalanceFunctionInpp.C:129 runBalanceFunctionInpp.C:130 runBalanceFunctionInpp.C:131 runBalanceFunctionInpp.C:132 runBalanceFunctionInpp.C:133 runBalanceFunctionInpp.C:134 runBalanceFunctionInpp.C:135 runBalanceFunctionInpp.C:136 runBalanceFunctionInpp.C:137 runBalanceFunctionInpp.C:138 runBalanceFunctionInpp.C:139 runBalanceFunctionInpp.C:140 runBalanceFunctionInpp.C:141 runBalanceFunctionInpp.C:142 runBalanceFunctionInpp.C:143 runBalanceFunctionInpp.C:144 runBalanceFunctionInpp.C:145 runBalanceFunctionInpp.C:146 runBalanceFunctionInpp.C:147 runBalanceFunctionInpp.C:148 runBalanceFunctionInpp.C:149 runBalanceFunctionInpp.C:150 runBalanceFunctionInpp.C:151 runBalanceFunctionInpp.C:152 runBalanceFunctionInpp.C:153 runBalanceFunctionInpp.C:154 runBalanceFunctionInpp.C:155 runBalanceFunctionInpp.C:156 runBalanceFunctionInpp.C:157 runBalanceFunctionInpp.C:158 runBalanceFunctionInpp.C:159 runBalanceFunctionInpp.C:160 runBalanceFunctionInpp.C:161 runBalanceFunctionInpp.C:162 runBalanceFunctionInpp.C:163 runBalanceFunctionInpp.C:164 runBalanceFunctionInpp.C:165 runBalanceFunctionInpp.C:166 runBalanceFunctionInpp.C:167 runBalanceFunctionInpp.C:168 runBalanceFunctionInpp.C:169 runBalanceFunctionInpp.C:170 runBalanceFunctionInpp.C:171 runBalanceFunctionInpp.C:172 runBalanceFunctionInpp.C:173 runBalanceFunctionInpp.C:174 runBalanceFunctionInpp.C:175 runBalanceFunctionInpp.C:176 runBalanceFunctionInpp.C:177 runBalanceFunctionInpp.C:178 runBalanceFunctionInpp.C:179 runBalanceFunctionInpp.C:180 runBalanceFunctionInpp.C:181 runBalanceFunctionInpp.C:182 runBalanceFunctionInpp.C:183 runBalanceFunctionInpp.C:184 runBalanceFunctionInpp.C:185 runBalanceFunctionInpp.C:186 runBalanceFunctionInpp.C:187 runBalanceFunctionInpp.C:188 runBalanceFunctionInpp.C:189 runBalanceFunctionInpp.C:190 runBalanceFunctionInpp.C:191 runBalanceFunctionInpp.C:192 runBalanceFunctionInpp.C:193 runBalanceFunctionInpp.C:194 runBalanceFunctionInpp.C:195 runBalanceFunctionInpp.C:196 runBalanceFunctionInpp.C:197 runBalanceFunctionInpp.C:198 runBalanceFunctionInpp.C:199 runBalanceFunctionInpp.C:200 runBalanceFunctionInpp.C:201 runBalanceFunctionInpp.C:202 runBalanceFunctionInpp.C:203 runBalanceFunctionInpp.C:204 runBalanceFunctionInpp.C:205 runBalanceFunctionInpp.C:206 runBalanceFunctionInpp.C:207 runBalanceFunctionInpp.C:208 runBalanceFunctionInpp.C:209 runBalanceFunctionInpp.C:210 runBalanceFunctionInpp.C:211 runBalanceFunctionInpp.C:212 runBalanceFunctionInpp.C:213 runBalanceFunctionInpp.C:214 runBalanceFunctionInpp.C:215 runBalanceFunctionInpp.C:216 runBalanceFunctionInpp.C:217 runBalanceFunctionInpp.C:218 runBalanceFunctionInpp.C:219 runBalanceFunctionInpp.C:220 runBalanceFunctionInpp.C:221 runBalanceFunctionInpp.C:222 runBalanceFunctionInpp.C:223 runBalanceFunctionInpp.C:224 runBalanceFunctionInpp.C:225