/********************************************
Macro to launch TOF QA task on ESDs data
Author: fbellini@cern.ch
Last update: 18 october 2012
*********************************************/
class AliAnalysisGrid;
TString analysisMode = "grid"; // "local" or "grid" - needs to be "grid" for plugin test mode
Bool_t useAlienPlugin=kTRUE; //use kFALSE for local analysis
//input dataset
Int_t runList[2]={186084,186162};
Int_t runNmin=0;
Int_t runNmax=2;
Int_t year = 2012;
TString prod = "LHC12d";
TString myRecPass="cpass1";
TString myQAfileSuffix="_Barrel";
Bool_t isMC = kFALSE;
TString gridUser="fbellini";
Int_t gridNtestFiles = 1;
TString prefix="_";
//do not change! to be set by SetupIO()
TString myGridDataDir="";
TString myDataPattern="";
TString myWorkDir;
TString myOutDir;
TString myJDLname;
TString myExecutableName;
TString myMacroName;
//----------------------------------------------------------------------
void SetupIO(TString filesPrefix = "")
{
//Setup I/O paths and file names
myGridDataDir = "/alice";
myWorkDir = "QA_pp2012";
myOutDir = Form("%s", prod.Data()) ;
myJDLname = Form("job_Run%s", myWorkDir.Data());
myExecutableName = Form("Run%s", myWorkDir.Data());
myMacroName = Form("Run%s", myWorkDir.Data());
if (isMC) myDataPattern="*AliESDs.root";
else myDataPattern=Form("%s/*AliESDs%s.root",myRecPass.Data(),myQAfileSuffix.Data());
myOutDir.Append(Form("_%s",myRecPass.Data()));
myJDLname.Append(Form("_%s",myRecPass.Data()));
myExecutableName.Append(Form("_%s",myRecPass.Data()));
myMacroName.Append(Form("_%s",myRecPass.Data()));
if (isMC) {
myGridDataDir.Append("/sim");
myWorkDir.Append("_MC");
myJDLname.Append("_MC");
myExecutableName.Append("_MC");
myMacroName.Append("_MC");
} else {
myGridDataDir.Append(Form("/data/%i",year));
}
myGridDataDir.Append(Form("/%s",prod.Data()));
myOutDir.Append(filesPrefix.Data());
myExecutableName.Append(Form("%s.sh",filesPrefix.Data()));
myMacroName.Append(Form("%s.C",filesPrefix.Data()));
myJDLname.Append(Form("_run%i-%i%s.jdl",runNmin,runNmax,filesPrefix.Data()));
Printf("========================================= Setup I/O:");
Printf("myGridDataDir = %s", myGridDataDir.Data());
Printf("myDataPattern = %s", myDataPattern.Data());
Printf("myWorkDir = %s", myWorkDir.Data());
Printf("myOutDir = %s", myOutDir.Data());
Printf("myJDLname = %s", myJDLname.Data());
Printf("myExecutableName = %s", myExecutableName.Data());
Printf("myMacroName = %s", myMacroName.Data());
Printf("=======================================================\n");
}
//----------------------------------------------------------------------
void SetGridUser(TString username){
if (username)
gridUser = username.Data();
return;
}
//----------------------------------------------------------------------
void SetGridNtestFiles(Int_t nfiles = 1){
if (nfiles<1) gridNtestFiles=1;
else gridNtestFiles = nfiles;
return;
}
//----------------------------------------------------------------------
void LoadLibraries()
{
gSystem->SetIncludePath("-I. -I$ROOTSYS/include -I$ALICE_ROOT/include -I$ALICE_ROOT -I$ALICE_ROOT/ITS -I$ALICE_ROOT/TRD -I$ALICE_ROOT/PWGPP -I$ALICE_ROOT/PWGPP/TRD");
gSystem->Load("libANALYSIS");
gSystem->Load("libANALYSISalice");
gSystem->Load("libCORRFW");
gSystem->Load("libTENDER");
gSystem->Load("libPWGPP.so");
}
//----------------------------------------------------------------------
void RunAnalysisTOFqaGrid(TString pluginmode="test", Int_t ntestfiles = 10, TString filesPrefix = "", TString gridUser="fbellini")
{
LoadLibraries();
SetGridUser(gridUser.Data());
SetGridNtestFiles(ntestfiles);
SetupIO(filesPrefix.Data());
if(analysisMode=="grid") {
TGrid::Connect("alien://");
}
Long64_t nentries=100000, firstentry=0;
Bool_t readMC = kFALSE;
if(useAlienPlugin) {
AliAnalysisGrid *alienHandler = CreateAlienHandler(pluginmode);
if(!alienHandler) return;
}
// Prepare input chain
TChain *chainESD = 0;
if(!useAlienPlugin) {
chainESD=new TChain("esdTree");
chainESD->Add("AliESDs.root"); //used to test locally - modify with local path files
}
AliAnalysisManager *mgr = new AliAnalysisManager("My Manager","My Manager");
mgr->SetDebugLevel(1);
if(useAlienPlugin) mgr->SetGridHandler(alienHandler);
AliInputEventHandler *esdH = new AliESDInputHandler();
mgr->SetInputEventHandler(esdH);
//-------------------------------------------------------------------
//-------------------------------------------------------------------
// Analysis tasks (wagons of the train)
//
TString taskName;
//Wagon for physics event selection
gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskPhysicsSelection.C");
AliPhysicsSelectionTask* physSelTask = AddTaskPhysicsSelection();
AliPhysicsSelection* physSel = physSelTask->GetPhysicsSelection();
if (isMC)physSelTask->GetPhysicsSelection()->SetAnalyzeMC();
//physSel->AddBackgroundIdentification(new AliBackgroundSelection());
gROOT->LoadMacro("$ALICE_ROOT/PWGPP/TOF/AddTaskTOFQA.C");
AliAnalysisTaskTOFqa *TOFqa = (AliAnalysisTaskTOFqa*) AddTaskTOFQA(kTRUE);
if(readMC) {
AliMCEventHandler *mcH = new AliMCEventHandler();
mgr->SetMCtruthEventHandler(mcH);
}
//
// Run the analysis
//
if(chainESD) printf("CHAIN HAS %d ENTRIES\n",(Int_t)chainESD->GetEntries());
if(!mgr->InitAnalysis()) return;
mgr->PrintStatus();
if(analysisMode=="grid" && !useAlienPlugin) analysisMode="local";
mgr->StartAnalysis(analysisMode.Data(),chainESD,nentries,firstentry);
return;
}
//_____________________________________________________________________________
AliAnalysisGrid* CreateAlienHandler(TString pluginmode="full")
{
AliAnalysisAlien *plugin = new AliAnalysisAlien();
// Set the run mode (can be "full", "test", "offline", "submit" or "terminate")
plugin->SetRunMode(pluginmode.Data());
plugin->SetUser(gridUser.Data()); //MODIFICA
plugin->SetNtestFiles(gridNtestFiles);
// Set versions of used packages
plugin->SetAPIVersion("V1.1x");
plugin->SetROOTVersion("v5-34-02"); //MODIFICA
plugin->SetAliROOTVersion("v5-03-70-AN"); //MODIFICA
//Set user grid output dir
plugin->SetGridWorkingDir(myWorkDir.Data());
plugin->SetGridOutputDir(myOutDir.Data());
plugin->SetCheckCopy(kTRUE);
plugin->SetGridDataDir(myGridDataDir.Data());
plugin->SetDataPattern(myDataPattern.Data());
if (!isMC) plugin->SetRunPrefix("000");
for (Int_t irun=runNmin;irun<runNmax;irun++){
plugin->AddRunNumber((Int_t )runList[irun]);
}
plugin->SetOutputToRunNo(1);
plugin->SetNrunsPerMaster(1);
plugin->SetExecutableCommand("aliroot -b -q");
plugin->SetOutputToRunNo(1);
plugin->SetNrunsPerMaster(1);
plugin->AddIncludePath("-I. -I$ROOTSYS/include -I$ALICE_ROOT/include -I$ALICE_ROOT -I$ALICE_ROOT/ITS -I$ALICE_ROOT/TRD -I$ALICE_ROOT/PWGPP -I$ALICE_ROOT/PWGPP/TRD");
plugin->SetAdditionalLibs("libANALYSIS.so libANALYSISalice.so libCORRFW.so libTENDER.so libPWGPP.so ");//libTRDbase.so libTRDrec.so
plugin->SetDefaultOutputs(kTRUE);
plugin->SetAnalysisMacro("AnalysisTOFqaSigned.C"); //MODIFICA se vuoi
plugin->SetExecutable("analysisTOFqaSigned.sh"); //MODIFICA se vuoi
plugin->SetSplitMaxInputFileNumber(50);
plugin->SetMaxInitFailed(15);
plugin->SetTTL(80000);
plugin->SetInputFormat("xml-single");
plugin->SetJDLName("TaskAnalysisTOFqaSigned.jdl"); //MODIFICA se vuoi
plugin->SetSplitMode("se");
return plugin;
}
//-----------------------------------------------------------------------------
TChain *CreateESDChain(TString esdpath=".",Int_t ifirst=-1,Int_t ilast=-1)
{
TChain *chainESD = new TChain("esdTree");
if(ifirst<0) {
chainESD->Add("AliESDs.root");
} else {
for(Int_t i=ifirst; i<=ilast; i++) {
TString esdfile=esdpath; esdfile+=i; esdfile.Append("/AliESDs.root");
chainESD->Add(esdfile.Data());
}
}
return chainESD;
}
RunAnalysisTOFqaGrid.C:10 RunAnalysisTOFqaGrid.C:11 RunAnalysisTOFqaGrid.C:12 RunAnalysisTOFqaGrid.C:13 RunAnalysisTOFqaGrid.C:14 RunAnalysisTOFqaGrid.C:15 RunAnalysisTOFqaGrid.C:16 RunAnalysisTOFqaGrid.C:17 RunAnalysisTOFqaGrid.C:18 RunAnalysisTOFqaGrid.C:19 RunAnalysisTOFqaGrid.C:20 RunAnalysisTOFqaGrid.C:21 RunAnalysisTOFqaGrid.C:22 RunAnalysisTOFqaGrid.C:23 RunAnalysisTOFqaGrid.C:24 RunAnalysisTOFqaGrid.C:25 RunAnalysisTOFqaGrid.C:26 RunAnalysisTOFqaGrid.C:27 RunAnalysisTOFqaGrid.C:28 RunAnalysisTOFqaGrid.C:29 RunAnalysisTOFqaGrid.C:30 RunAnalysisTOFqaGrid.C:31 RunAnalysisTOFqaGrid.C:32 RunAnalysisTOFqaGrid.C:33 RunAnalysisTOFqaGrid.C:34 RunAnalysisTOFqaGrid.C:35 RunAnalysisTOFqaGrid.C:36 RunAnalysisTOFqaGrid.C:37 RunAnalysisTOFqaGrid.C:38 RunAnalysisTOFqaGrid.C:39 RunAnalysisTOFqaGrid.C:40 RunAnalysisTOFqaGrid.C:41 RunAnalysisTOFqaGrid.C:42 RunAnalysisTOFqaGrid.C:43 RunAnalysisTOFqaGrid.C:44 RunAnalysisTOFqaGrid.C:45 RunAnalysisTOFqaGrid.C:46 RunAnalysisTOFqaGrid.C:47 RunAnalysisTOFqaGrid.C:48 RunAnalysisTOFqaGrid.C:49 RunAnalysisTOFqaGrid.C:50 RunAnalysisTOFqaGrid.C:51 RunAnalysisTOFqaGrid.C:52 RunAnalysisTOFqaGrid.C:53 RunAnalysisTOFqaGrid.C:54 RunAnalysisTOFqaGrid.C:55 RunAnalysisTOFqaGrid.C:56 RunAnalysisTOFqaGrid.C:57 RunAnalysisTOFqaGrid.C:58 RunAnalysisTOFqaGrid.C:59 RunAnalysisTOFqaGrid.C:60 RunAnalysisTOFqaGrid.C:61 RunAnalysisTOFqaGrid.C:62 RunAnalysisTOFqaGrid.C:63 RunAnalysisTOFqaGrid.C:64 RunAnalysisTOFqaGrid.C:65 RunAnalysisTOFqaGrid.C:66 RunAnalysisTOFqaGrid.C:67 RunAnalysisTOFqaGrid.C:68 RunAnalysisTOFqaGrid.C:69 RunAnalysisTOFqaGrid.C:70 RunAnalysisTOFqaGrid.C:71 RunAnalysisTOFqaGrid.C:72 RunAnalysisTOFqaGrid.C:73 RunAnalysisTOFqaGrid.C:74 RunAnalysisTOFqaGrid.C:75 RunAnalysisTOFqaGrid.C:76 RunAnalysisTOFqaGrid.C:77 RunAnalysisTOFqaGrid.C:78 RunAnalysisTOFqaGrid.C:79 RunAnalysisTOFqaGrid.C:80 RunAnalysisTOFqaGrid.C:81 RunAnalysisTOFqaGrid.C:82 RunAnalysisTOFqaGrid.C:83 RunAnalysisTOFqaGrid.C:84 RunAnalysisTOFqaGrid.C:85 RunAnalysisTOFqaGrid.C:86 RunAnalysisTOFqaGrid.C:87 RunAnalysisTOFqaGrid.C:88 RunAnalysisTOFqaGrid.C:89 RunAnalysisTOFqaGrid.C:90 RunAnalysisTOFqaGrid.C:91 RunAnalysisTOFqaGrid.C:92 RunAnalysisTOFqaGrid.C:93 RunAnalysisTOFqaGrid.C:94 RunAnalysisTOFqaGrid.C:95 RunAnalysisTOFqaGrid.C:96 RunAnalysisTOFqaGrid.C:97 RunAnalysisTOFqaGrid.C:98 RunAnalysisTOFqaGrid.C:99 RunAnalysisTOFqaGrid.C:100 RunAnalysisTOFqaGrid.C:101 RunAnalysisTOFqaGrid.C:102 RunAnalysisTOFqaGrid.C:103 RunAnalysisTOFqaGrid.C:104 RunAnalysisTOFqaGrid.C:105 RunAnalysisTOFqaGrid.C:106 RunAnalysisTOFqaGrid.C:107 RunAnalysisTOFqaGrid.C:108 RunAnalysisTOFqaGrid.C:109 RunAnalysisTOFqaGrid.C:110 RunAnalysisTOFqaGrid.C:111 RunAnalysisTOFqaGrid.C:112 RunAnalysisTOFqaGrid.C:113 RunAnalysisTOFqaGrid.C:114 RunAnalysisTOFqaGrid.C:115 RunAnalysisTOFqaGrid.C:116 RunAnalysisTOFqaGrid.C:117 RunAnalysisTOFqaGrid.C:118 RunAnalysisTOFqaGrid.C:119 RunAnalysisTOFqaGrid.C:120 RunAnalysisTOFqaGrid.C:121 RunAnalysisTOFqaGrid.C:122 RunAnalysisTOFqaGrid.C:123 RunAnalysisTOFqaGrid.C:124 RunAnalysisTOFqaGrid.C:125 RunAnalysisTOFqaGrid.C:126 RunAnalysisTOFqaGrid.C:127 RunAnalysisTOFqaGrid.C:128 RunAnalysisTOFqaGrid.C:129 RunAnalysisTOFqaGrid.C:130 RunAnalysisTOFqaGrid.C:131 RunAnalysisTOFqaGrid.C:132 RunAnalysisTOFqaGrid.C:133 RunAnalysisTOFqaGrid.C:134 RunAnalysisTOFqaGrid.C:135 RunAnalysisTOFqaGrid.C:136 RunAnalysisTOFqaGrid.C:137 RunAnalysisTOFqaGrid.C:138 RunAnalysisTOFqaGrid.C:139 RunAnalysisTOFqaGrid.C:140 RunAnalysisTOFqaGrid.C:141 RunAnalysisTOFqaGrid.C:142 RunAnalysisTOFqaGrid.C:143 RunAnalysisTOFqaGrid.C:144 RunAnalysisTOFqaGrid.C:145 RunAnalysisTOFqaGrid.C:146 RunAnalysisTOFqaGrid.C:147 RunAnalysisTOFqaGrid.C:148 RunAnalysisTOFqaGrid.C:149 RunAnalysisTOFqaGrid.C:150 RunAnalysisTOFqaGrid.C:151 RunAnalysisTOFqaGrid.C:152 RunAnalysisTOFqaGrid.C:153 RunAnalysisTOFqaGrid.C:154 RunAnalysisTOFqaGrid.C:155 RunAnalysisTOFqaGrid.C:156 RunAnalysisTOFqaGrid.C:157 RunAnalysisTOFqaGrid.C:158 RunAnalysisTOFqaGrid.C:159 RunAnalysisTOFqaGrid.C:160 RunAnalysisTOFqaGrid.C:161 RunAnalysisTOFqaGrid.C:162 RunAnalysisTOFqaGrid.C:163 RunAnalysisTOFqaGrid.C:164 RunAnalysisTOFqaGrid.C:165 RunAnalysisTOFqaGrid.C:166 RunAnalysisTOFqaGrid.C:167 RunAnalysisTOFqaGrid.C:168 RunAnalysisTOFqaGrid.C:169 RunAnalysisTOFqaGrid.C:170 RunAnalysisTOFqaGrid.C:171 RunAnalysisTOFqaGrid.C:172 RunAnalysisTOFqaGrid.C:173 RunAnalysisTOFqaGrid.C:174 RunAnalysisTOFqaGrid.C:175 RunAnalysisTOFqaGrid.C:176 RunAnalysisTOFqaGrid.C:177 RunAnalysisTOFqaGrid.C:178 RunAnalysisTOFqaGrid.C:179 RunAnalysisTOFqaGrid.C:180 RunAnalysisTOFqaGrid.C:181 RunAnalysisTOFqaGrid.C:182 RunAnalysisTOFqaGrid.C:183 RunAnalysisTOFqaGrid.C:184 RunAnalysisTOFqaGrid.C:185 RunAnalysisTOFqaGrid.C:186 RunAnalysisTOFqaGrid.C:187 RunAnalysisTOFqaGrid.C:188 RunAnalysisTOFqaGrid.C:189 RunAnalysisTOFqaGrid.C:190 RunAnalysisTOFqaGrid.C:191 RunAnalysisTOFqaGrid.C:192 RunAnalysisTOFqaGrid.C:193 RunAnalysisTOFqaGrid.C:194 RunAnalysisTOFqaGrid.C:195 RunAnalysisTOFqaGrid.C:196 RunAnalysisTOFqaGrid.C:197 RunAnalysisTOFqaGrid.C:198 RunAnalysisTOFqaGrid.C:199 RunAnalysisTOFqaGrid.C:200 RunAnalysisTOFqaGrid.C:201 RunAnalysisTOFqaGrid.C:202 RunAnalysisTOFqaGrid.C:203 RunAnalysisTOFqaGrid.C:204 RunAnalysisTOFqaGrid.C:205 RunAnalysisTOFqaGrid.C:206 RunAnalysisTOFqaGrid.C:207 RunAnalysisTOFqaGrid.C:208 RunAnalysisTOFqaGrid.C:209 RunAnalysisTOFqaGrid.C:210 RunAnalysisTOFqaGrid.C:211 RunAnalysisTOFqaGrid.C:212 RunAnalysisTOFqaGrid.C:213 RunAnalysisTOFqaGrid.C:214 RunAnalysisTOFqaGrid.C:215 RunAnalysisTOFqaGrid.C:216 RunAnalysisTOFqaGrid.C:217 RunAnalysisTOFqaGrid.C:218 RunAnalysisTOFqaGrid.C:219 RunAnalysisTOFqaGrid.C:220 RunAnalysisTOFqaGrid.C:221 RunAnalysisTOFqaGrid.C:222 RunAnalysisTOFqaGrid.C:223