// Steer TRD QA train for Reconstruction (Clusterizer, Tracking and PID).
//
// Usage:
// AddTrainPerformanceTRD.C(MC, friends, tasks)
// tasks : "ALL" or one/more of the following:
// "EFF" : TRD Tracking Efficiency
// "EFFC" : TRD Tracking Efficiency Combined (barrel + stand alone) - only in case of simulations
// "MULT" : TRD single track selection
// "RES" : TRD tracking Resolution
// "CLRES": clusters Resolution
// "CAL" : TRD calibration
// "ALGN" : TRD alignment
// "PID" : TRD PID - pion efficiency
// "PIDR" : TRD PID - reference data
// "DET" : Basic TRD Detector checks
// "NOFR" : Data set does not have AliESDfriends.root
// "NOMC" : Data set does not have Monte Carlo Informations (real data), so all tasks which rely
// on MC information are switched off
//
// In compiled mode :
// Don't forget to load first the libraries
// gSystem->Load("libMemStat.so")
// gSystem->Load("libMemStatGui.so")
// gSystem->Load("libANALYSIS.so")
// gSystem->Load("libANALYSISalice.so")
// gSystem->Load("libPWGPP.so");
//
// Authors:
// Alex Bercuci (A.Bercuci@gsi.de)
// Markus Fasel (m.Fasel@gsi.de)
#if ! defined (__CINT__) || defined (__MAKECINT__)
//#ifndef __CINT__
#include <Riostream.h>
#include "TStopwatch.h"
#include "TMemStat.h"
#include "TMemStatViewerGUI.h"
#include "TROOT.h"
#include "TClass.h"
#include "TSystem.h"
#include "TString.h"
#include "TError.h"
#include "TChain.h"
#include "TGrid.h"
#include "TAlienCollection.h"
#include "TGridCollection.h"
#include "TGridResult.h"
#include "TGeoGlobalMagField.h"
#include "AliMagF.h"
#include "AliTracker.h"
#include "AliLog.h"
#include "AliCDBManager.h"
#include "AliGRPManager.h"
#include "AliGeomManager.h"
#include "AliAnalysisManager.h"
#include "AliAnalysisDataContainer.h"
#include "AliMCEventHandler.h"
#include "AliESDInputHandler.h"
#include "TRD/AliTRDtrackerV1.h"
#include "TRD/AliTRDcalibDB.h"
#include "PWGPP/TRD/macros/AddTRDcheckESD.C"
#include "PWGPP/TRD/macros/AddTRDinfoGen.C"
#include "PWGPP/TRD/macros/AddTRDcheckDET.C"
#include "PWGPP/TRD/macros/AddTRDefficiency.C"
#include "PWGPP/TRD/macros/AddTRDresolution.C"
#include "PWGPP/TRD/macros/AddTRDcheckPID.C"
#include "PWGPP/TRD/macros/AddTRDcheckTRK.C"
#include "PWGPP/TRD/macros/AddTRDv0Monitor.C"
#endif
TString opt("");
const Char_t* Translate(Bool_t doCheckESD=kTRUE, Bool_t doCheckDET=kTRUE, Bool_t doEffic=kTRUE, Bool_t doResolution=kTRUE, Bool_t doCheckPID=kTRUE, Bool_t doV0Monitor=kTRUE);
Bool_t AddTrainPerformanceTRD(Char_t *trd="ALL", const Char_t *addMacroPath = "$ALICE_ROOT/PWGPP/TRD/macros")
{
AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
if(!mgr) {
Error("AddTrainPerformanceTRD", "AliAnalysisManager not set!");
return kFALSE;
}
// TRD data containers
AliAnalysisDataContainer *ci[AliTRDpwgppHelper::kNOutSlots];
AliAnalysisDataContainer *ce[5];
Info("AddTrainPerformanceTRD", Form("Add Macros taken from %s", addMacroPath));
Info("AddTrainPerformanceTRD", Form("TRD wagons \"%s\"", trd));
Int_t bitmap = AliTRDpwgppHelper::ParseOptions(trd);
for(Int_t it=0; it<AliTRDpwgppHelper::kNTRDQATASKS; it++){
if(gROOT->LoadMacro(Form("%s/Add%s.C+", addMacroPath, TString(AliTRDpwgppHelper::TaskClassName(it))(3,20).Data()))) {
Error("AddTrainPerformanceTRD()", Form("Error loading %s task.", AliTRDpwgppHelper::TaskClassName(it)));
return kFALSE;
}
if(!AliTRDpwgppHelper::DoTask(it, bitmap)) continue;
switch(it){
case AliTRDpwgppHelper::kCheckESD:
AddTRDcheckESD(mgr); break;
case AliTRDpwgppHelper::kInfoGen:
AddTRDinfoGen(mgr, 0, NULL, ci); break;
case AliTRDpwgppHelper::kCheckDET:
// map slots
ce[0]=ci[AliTRDpwgppHelper::kTracksBarrel];
ce[1]=ci[AliTRDpwgppHelper::kTracksSA];
ce[2]=ci[AliTRDpwgppHelper::kTracksKink];
ce[3]=ci[AliTRDpwgppHelper::kEventInfo];
ce[4]=ci[AliTRDpwgppHelper::kClusters];
AddTRDcheckDET(mgr, bitmap, ce);
break;
case AliTRDpwgppHelper::kEfficiency:
// map slots
ce[0]=ci[AliTRDpwgppHelper::kTracksBarrel];
ce[1]=ci[AliTRDpwgppHelper::kTracksITS];
ce[2]=ci[AliTRDpwgppHelper::kTracksKink];
ce[3]=ci[AliTRDpwgppHelper::kEventInfo];
ce[4]=ci[AliTRDpwgppHelper::kClusters];
AddTRDefficiency(mgr, bitmap, ce);
break;
case AliTRDpwgppHelper::kResolution:
// map slots
ce[0]=ci[AliTRDpwgppHelper::kTracksBarrel];
ce[1]=ci[AliTRDpwgppHelper::kTracksITS];
ce[2]=ci[AliTRDpwgppHelper::kTracksKink];
ce[3]=ci[AliTRDpwgppHelper::kEventInfo];
ce[4]=ci[AliTRDpwgppHelper::kClusters];
AddTRDresolution(mgr, bitmap, ce);
break;
case AliTRDpwgppHelper::kCheckPID:
// map slots
ce[0]=ci[AliTRDpwgppHelper::kTracksBarrel];
ce[1]=ci[AliTRDpwgppHelper::kEventInfo];
ce[2]=ci[AliTRDpwgppHelper::kV0List];
AddTRDcheckPID(mgr, bitmap, ce, &ce[3]);
break;
case AliTRDpwgppHelper::kCheckTRK:
// map slots
ce[0]=ci[AliTRDpwgppHelper::kTracksBarrel];
ce[1]=ci[AliTRDpwgppHelper::kEventInfo];
ce[2]=ci[AliTRDpwgppHelper::kClusters];
AddTRDcheckTRK(mgr, 0, ce);
break;
case AliTRDpwgppHelper::kV0Monitor:
// slots already mapped by checkPID
AddTRDv0Monitor(mgr, 0, ce);
break;
default:
Warning("AddTrainPerformanceTRD()", Form("No performance task registered at slot %d.", it));
}
}
return kTRUE;
}
const Char_t* Translate(Bool_t doCheckESD, Bool_t doCheckDET, Bool_t doEffic, Bool_t doResolution, Bool_t doCheckPID, Bool_t doCheckV0)
{
opt.Clear();
if( doCheckESD==kTRUE &&
doCheckDET==kTRUE &&
doEffic==kTRUE &&
doResolution==kTRUE &&
doCheckPID==kTRUE &&
doCheckV0==kTRUE
){
opt="ALL";
} else {
Bool_t kINDENT(kFALSE);
if(doCheckESD){
opt.Append("ESD");
kINDENT=kTRUE;
}
if(doCheckDET){
if(kINDENT) opt.Append(" ");
opt.Append("DET");
kINDENT = kTRUE;
}
if(doEffic){
if(kINDENT) opt.Append(" ");
opt.Append("EFF");
kINDENT=kTRUE;
}
if(doResolution){
if(kINDENT) opt.Append(" ");
opt.Append("RES");
kINDENT=kTRUE;
}
if(doCheckPID){
if(kINDENT) opt.Append(" ");
opt.Append("PID");
kINDENT=kTRUE;
}
if(doCheckV0){
if(kINDENT) opt.Append(" ");
opt.Append("V0");
kINDENT=kTRUE;
}
}
return (const Char_t*)opt.Data();
}
AddTrainPerformanceTRD.C:1 AddTrainPerformanceTRD.C:2 AddTrainPerformanceTRD.C:3 AddTrainPerformanceTRD.C:4 AddTrainPerformanceTRD.C:5 AddTrainPerformanceTRD.C:6 AddTrainPerformanceTRD.C:7 AddTrainPerformanceTRD.C:8 AddTrainPerformanceTRD.C:9 AddTrainPerformanceTRD.C:10 AddTrainPerformanceTRD.C:11 AddTrainPerformanceTRD.C:12 AddTrainPerformanceTRD.C:13 AddTrainPerformanceTRD.C:14 AddTrainPerformanceTRD.C:15 AddTrainPerformanceTRD.C:16 AddTrainPerformanceTRD.C:17 AddTrainPerformanceTRD.C:18 AddTrainPerformanceTRD.C:19 AddTrainPerformanceTRD.C:20 AddTrainPerformanceTRD.C:21 AddTrainPerformanceTRD.C:22 AddTrainPerformanceTRD.C:23 AddTrainPerformanceTRD.C:24 AddTrainPerformanceTRD.C:25 AddTrainPerformanceTRD.C:26 AddTrainPerformanceTRD.C:27 AddTrainPerformanceTRD.C:28 AddTrainPerformanceTRD.C:29 AddTrainPerformanceTRD.C:30 AddTrainPerformanceTRD.C:31 AddTrainPerformanceTRD.C:32 AddTrainPerformanceTRD.C:33 AddTrainPerformanceTRD.C:34 AddTrainPerformanceTRD.C:35 AddTrainPerformanceTRD.C:36 AddTrainPerformanceTRD.C:37 AddTrainPerformanceTRD.C:38 AddTrainPerformanceTRD.C:39 AddTrainPerformanceTRD.C:40 AddTrainPerformanceTRD.C:41 AddTrainPerformanceTRD.C:42 AddTrainPerformanceTRD.C:43 AddTrainPerformanceTRD.C:44 AddTrainPerformanceTRD.C:45 AddTrainPerformanceTRD.C:46 AddTrainPerformanceTRD.C:47 AddTrainPerformanceTRD.C:48 AddTrainPerformanceTRD.C:49 AddTrainPerformanceTRD.C:50 AddTrainPerformanceTRD.C:51 AddTrainPerformanceTRD.C:52 AddTrainPerformanceTRD.C:53 AddTrainPerformanceTRD.C:54 AddTrainPerformanceTRD.C:55 AddTrainPerformanceTRD.C:56 AddTrainPerformanceTRD.C:57 AddTrainPerformanceTRD.C:58 AddTrainPerformanceTRD.C:59 AddTrainPerformanceTRD.C:60 AddTrainPerformanceTRD.C:61 AddTrainPerformanceTRD.C:62 AddTrainPerformanceTRD.C:63 AddTrainPerformanceTRD.C:64 AddTrainPerformanceTRD.C:65 AddTrainPerformanceTRD.C:66 AddTrainPerformanceTRD.C:67 AddTrainPerformanceTRD.C:68 AddTrainPerformanceTRD.C:69 AddTrainPerformanceTRD.C:70 AddTrainPerformanceTRD.C:71 AddTrainPerformanceTRD.C:72 AddTrainPerformanceTRD.C:73 AddTrainPerformanceTRD.C:74 AddTrainPerformanceTRD.C:75 AddTrainPerformanceTRD.C:76 AddTrainPerformanceTRD.C:77 AddTrainPerformanceTRD.C:78 AddTrainPerformanceTRD.C:79 AddTrainPerformanceTRD.C:80 AddTrainPerformanceTRD.C:81 AddTrainPerformanceTRD.C:82 AddTrainPerformanceTRD.C:83 AddTrainPerformanceTRD.C:84 AddTrainPerformanceTRD.C:85 AddTrainPerformanceTRD.C:86 AddTrainPerformanceTRD.C:87 AddTrainPerformanceTRD.C:88 AddTrainPerformanceTRD.C:89 AddTrainPerformanceTRD.C:90 AddTrainPerformanceTRD.C:91 AddTrainPerformanceTRD.C:92 AddTrainPerformanceTRD.C:93 AddTrainPerformanceTRD.C:94 AddTrainPerformanceTRD.C:95 AddTrainPerformanceTRD.C:96 AddTrainPerformanceTRD.C:97 AddTrainPerformanceTRD.C:98 AddTrainPerformanceTRD.C:99 AddTrainPerformanceTRD.C:100 AddTrainPerformanceTRD.C:101 AddTrainPerformanceTRD.C:102 AddTrainPerformanceTRD.C:103 AddTrainPerformanceTRD.C:104 AddTrainPerformanceTRD.C:105 AddTrainPerformanceTRD.C:106 AddTrainPerformanceTRD.C:107 AddTrainPerformanceTRD.C:108 AddTrainPerformanceTRD.C:109 AddTrainPerformanceTRD.C:110 AddTrainPerformanceTRD.C:111 AddTrainPerformanceTRD.C:112 AddTrainPerformanceTRD.C:113 AddTrainPerformanceTRD.C:114 AddTrainPerformanceTRD.C:115 AddTrainPerformanceTRD.C:116 AddTrainPerformanceTRD.C:117 AddTrainPerformanceTRD.C:118 AddTrainPerformanceTRD.C:119 AddTrainPerformanceTRD.C:120 AddTrainPerformanceTRD.C:121 AddTrainPerformanceTRD.C:122 AddTrainPerformanceTRD.C:123 AddTrainPerformanceTRD.C:124 AddTrainPerformanceTRD.C:125 AddTrainPerformanceTRD.C:126 AddTrainPerformanceTRD.C:127 AddTrainPerformanceTRD.C:128 AddTrainPerformanceTRD.C:129 AddTrainPerformanceTRD.C:130 AddTrainPerformanceTRD.C:131 AddTrainPerformanceTRD.C:132 AddTrainPerformanceTRD.C:133 AddTrainPerformanceTRD.C:134 AddTrainPerformanceTRD.C:135 AddTrainPerformanceTRD.C:136 AddTrainPerformanceTRD.C:137 AddTrainPerformanceTRD.C:138 AddTrainPerformanceTRD.C:139 AddTrainPerformanceTRD.C:140 AddTrainPerformanceTRD.C:141 AddTrainPerformanceTRD.C:142 AddTrainPerformanceTRD.C:143 AddTrainPerformanceTRD.C:144 AddTrainPerformanceTRD.C:145 AddTrainPerformanceTRD.C:146 AddTrainPerformanceTRD.C:147 AddTrainPerformanceTRD.C:148 AddTrainPerformanceTRD.C:149 AddTrainPerformanceTRD.C:150 AddTrainPerformanceTRD.C:151 AddTrainPerformanceTRD.C:152 AddTrainPerformanceTRD.C:153 AddTrainPerformanceTRD.C:154 AddTrainPerformanceTRD.C:155 AddTrainPerformanceTRD.C:156 AddTrainPerformanceTRD.C:157 AddTrainPerformanceTRD.C:158 AddTrainPerformanceTRD.C:159 AddTrainPerformanceTRD.C:160 AddTrainPerformanceTRD.C:161 AddTrainPerformanceTRD.C:162 AddTrainPerformanceTRD.C:163 AddTrainPerformanceTRD.C:164 AddTrainPerformanceTRD.C:165 AddTrainPerformanceTRD.C:166 AddTrainPerformanceTRD.C:167 AddTrainPerformanceTRD.C:168 AddTrainPerformanceTRD.C:169 AddTrainPerformanceTRD.C:170 AddTrainPerformanceTRD.C:171 AddTrainPerformanceTRD.C:172 AddTrainPerformanceTRD.C:173 AddTrainPerformanceTRD.C:174 AddTrainPerformanceTRD.C:175 AddTrainPerformanceTRD.C:176 AddTrainPerformanceTRD.C:177 AddTrainPerformanceTRD.C:178 AddTrainPerformanceTRD.C:179 AddTrainPerformanceTRD.C:180 AddTrainPerformanceTRD.C:181 AddTrainPerformanceTRD.C:182 AddTrainPerformanceTRD.C:183 AddTrainPerformanceTRD.C:184 AddTrainPerformanceTRD.C:185 AddTrainPerformanceTRD.C:186 AddTrainPerformanceTRD.C:187 AddTrainPerformanceTRD.C:188 AddTrainPerformanceTRD.C:189 AddTrainPerformanceTRD.C:190 AddTrainPerformanceTRD.C:191 AddTrainPerformanceTRD.C:192 AddTrainPerformanceTRD.C:193 AddTrainPerformanceTRD.C:194 AddTrainPerformanceTRD.C:195 AddTrainPerformanceTRD.C:196 AddTrainPerformanceTRD.C:197 AddTrainPerformanceTRD.C:198 AddTrainPerformanceTRD.C:199 AddTrainPerformanceTRD.C:200 AddTrainPerformanceTRD.C:201 AddTrainPerformanceTRD.C:202 AddTrainPerformanceTRD.C:203 AddTrainPerformanceTRD.C:204 AddTrainPerformanceTRD.C:205