-// Steer TRD QA train for Reconstruction (Clusterizer, Tracking and PID).\r
-// \r
-// Usage:\r
-// AddTrainPerformanceTRD.C(MC, friends, tasks)\r
-// tasks : "ALL" or one/more of the following:\r
-// "EFF" : TRD Tracking Efficiency \r
-// "EFFC" : TRD Tracking Efficiency Combined (barrel + stand alone) - only in case of simulations\r
-// "MULT" : TRD single track selection\r
-// "RES" : TRD tracking Resolution\r
-// "CLRES": clusters Resolution\r
-// "CAL" : TRD calibration\r
-// "ALGN" : TRD alignment\r
-// "PID" : TRD PID - pion efficiency \r
-// "PIDR" : TRD PID - reference data\r
-// "DET" : Basic TRD Detector checks\r
-// "NOFR" : Data set does not have AliESDfriends.root \r
-// "NOMC" : Data set does not have Monte Carlo Informations (real data), so all tasks which rely\r
-// on MC information are switched off\r
-//\r
-// In compiled mode : \r
-// Don't forget to load first the libraries\r
-// gSystem->Load("libMemStat.so")\r
-// gSystem->Load("libMemStatGui.so")\r
-// gSystem->Load("libANALYSIS.so")\r
-// gSystem->Load("libANALYSISalice.so")\r
-// gSystem->Load("libPWGPP.so");\r
-//\r
-// Authors:\r
-// Alex Bercuci (A.Bercuci@gsi.de) \r
-// Markus Fasel (m.Fasel@gsi.de) \r
-\r
-#if ! defined (__CINT__) || defined (__MAKECINT__)\r
-//#ifndef __CINT__\r
-#include <Riostream.h>\r
-\r
-#include "TStopwatch.h"\r
-#include "TMemStat.h"\r
-#include "TMemStatViewerGUI.h"\r
-\r
-#include "TROOT.h"\r
-#include "TClass.h"\r
-#include "TSystem.h"\r
-#include "TString.h"\r
-#include "TError.h"\r
-#include "TChain.h"\r
-#include "TGrid.h"\r
-#include "TAlienCollection.h"\r
-#include "TGridCollection.h"\r
-#include "TGridResult.h"\r
-#include "TGeoGlobalMagField.h"\r
-\r
-#include "AliMagF.h"\r
-#include "AliTracker.h"\r
-#include "AliLog.h"\r
-#include "AliCDBManager.h"\r
-#include "AliGRPManager.h"\r
-#include "AliGeomManager.h"\r
-#include "AliAnalysisManager.h"\r
-#include "AliAnalysisDataContainer.h"\r
-#include "AliMCEventHandler.h"\r
-#include "AliESDInputHandler.h"\r
-\r
-#include "TRD/AliTRDtrackerV1.h"\r
-#include "TRD/AliTRDcalibDB.h"\r
-\r
-#include "PWGPP/TRD/macros/AddTRDcheckESD.C"\r
-#include "PWGPP/TRD/macros/AddTRDinfoGen.C"\r
-#include "PWGPP/TRD/macros/AddTRDcheckDET.C"\r
-#include "PWGPP/TRD/macros/AddTRDefficiency.C"\r
-#include "PWGPP/TRD/macros/AddTRDresolution.C"\r
-#include "PWGPP/TRD/macros/AddTRDcheckPID.C"\r
-#include "PWGPP/TRD/macros/AddTRDcheckTRK.C"\r
-#include "PWGPP/TRD/macros/AddTRDv0Monitor.C"\r
-#endif\r
-\r
-TString opt("");\r
-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);\r
-Bool_t AddTrainPerformanceTRD(Char_t *trd="ALL", const Char_t *addMacroPath = "$ALICE_ROOT/PWGPP/TRD/macros")\r
-{\r
- AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();\r
- if(!mgr) { \r
- Error("AddTrainPerformanceTRD", "AliAnalysisManager not set!");\r
- return kFALSE;\r
- }\r
-\r
- // TRD data containers\r
- AliAnalysisDataContainer *ci[AliTRDpwgppHelper::kNOutSlots];\r
- AliAnalysisDataContainer *ce[5];\r
-\r
- Info("AddTrainPerformanceTRD", Form("Add Macros taken from %s", addMacroPath));\r
- Info("AddTrainPerformanceTRD", Form("TRD wagons \"%s\"", trd));\r
- Int_t bitmap = AliTRDpwgppHelper::ParseOptions(trd);\r
- for(Int_t it=0; it<AliTRDpwgppHelper::kNTRDQATASKS; it++){\r
- if(gROOT->LoadMacro(Form("%s/Add%s.C+", addMacroPath, TString(AliTRDpwgppHelper::TaskClassName(it))(3,20).Data()))) {\r
- Error("AddTrainPerformanceTRD()", Form("Error loading %s task.", AliTRDpwgppHelper::TaskClassName(it)));\r
- return kFALSE;\r
- } \r
- if(!AliTRDpwgppHelper::DoTask(it, bitmap)) continue;\r
-\r
- switch(it){\r
- case AliTRDpwgppHelper::kCheckESD:\r
- AddTRDcheckESD(mgr); break;\r
- case AliTRDpwgppHelper::kInfoGen:\r
- AddTRDinfoGen(mgr, 0, NULL, ci); break;\r
- case AliTRDpwgppHelper::kCheckDET:\r
- // map slots\r
- ce[0]=ci[AliTRDpwgppHelper::kTracksBarrel];\r
- ce[1]=ci[AliTRDpwgppHelper::kTracksSA];\r
- ce[2]=ci[AliTRDpwgppHelper::kTracksKink];\r
- ce[3]=ci[AliTRDpwgppHelper::kEventInfo];\r
- ce[4]=ci[AliTRDpwgppHelper::kClusters];\r
- AddTRDcheckDET(mgr, bitmap, ce);\r
- break;\r
- case AliTRDpwgppHelper::kEfficiency:\r
- // map slots\r
- ce[0]=ci[AliTRDpwgppHelper::kTracksBarrel];\r
- ce[1]=ci[AliTRDpwgppHelper::kTracksITS];\r
- ce[2]=ci[AliTRDpwgppHelper::kTracksKink];\r
- ce[3]=ci[AliTRDpwgppHelper::kEventInfo];\r
- ce[4]=ci[AliTRDpwgppHelper::kClusters];\r
- AddTRDefficiency(mgr, bitmap, ce);\r
- break;\r
- case AliTRDpwgppHelper::kResolution:\r
- // map slots\r
- ce[0]=ci[AliTRDpwgppHelper::kTracksBarrel];\r
- ce[1]=ci[AliTRDpwgppHelper::kTracksITS];\r
- ce[2]=ci[AliTRDpwgppHelper::kTracksKink];\r
- ce[3]=ci[AliTRDpwgppHelper::kEventInfo];\r
- ce[4]=ci[AliTRDpwgppHelper::kClusters];\r
- AddTRDresolution(mgr, bitmap, ce); \r
- break;\r
- case AliTRDpwgppHelper::kCheckPID:\r
- // map slots\r
- ce[0]=ci[AliTRDpwgppHelper::kTracksBarrel];\r
- ce[1]=ci[AliTRDpwgppHelper::kEventInfo];\r
- ce[2]=ci[AliTRDpwgppHelper::kV0List];\r
- AddTRDcheckPID(mgr, bitmap, ce, &ce[3]);\r
- break;\r
- case AliTRDpwgppHelper::kCheckTRK:\r
- // map slots\r
- ce[0]=ci[AliTRDpwgppHelper::kTracksBarrel];\r
- ce[1]=ci[AliTRDpwgppHelper::kEventInfo];\r
- ce[2]=ci[AliTRDpwgppHelper::kClusters];\r
- AddTRDcheckTRK(mgr, 0, ce);\r
- break;\r
- case AliTRDpwgppHelper::kV0Monitor:\r
- // slots already mapped by checkPID\r
- AddTRDv0Monitor(mgr, 0, ce);\r
- break;\r
- default:\r
- Warning("AddTrainPerformanceTRD()", Form("No performance task registered at slot %d.", it)); \r
- }\r
- }\r
- return kTRUE;\r
-}\r
-\r
-const Char_t* Translate(Bool_t doCheckESD, Bool_t doCheckDET, Bool_t doEffic, Bool_t doResolution, Bool_t doCheckPID, Bool_t doCheckV0)\r
-{\r
- opt.Clear();\r
- if( doCheckESD==kTRUE &&\r
- doCheckDET==kTRUE &&\r
- doEffic==kTRUE &&\r
- doResolution==kTRUE &&\r
- doCheckPID==kTRUE &&\r
- doCheckV0==kTRUE\r
- ){\r
- opt="ALL";\r
- } else {\r
- Bool_t kINDENT(kFALSE);\r
- if(doCheckESD){ \r
- opt.Append("ESD");\r
- kINDENT=kTRUE;\r
- }\r
- if(doCheckDET){ \r
- if(kINDENT) opt.Append(" ");\r
- opt.Append("DET"); \r
- kINDENT = kTRUE;\r
- }\r
- if(doEffic){ \r
- if(kINDENT) opt.Append(" ");\r
- opt.Append("EFF");\r
- kINDENT=kTRUE;\r
- }\r
- if(doResolution){ \r
- if(kINDENT) opt.Append(" ");\r
- opt.Append("RES");\r
- kINDENT=kTRUE;\r
- }\r
- if(doCheckPID){ \r
- if(kINDENT) opt.Append(" ");\r
- opt.Append("PID");\r
- kINDENT=kTRUE;\r
- }\r
- if(doCheckV0){ \r
- if(kINDENT) opt.Append(" ");\r
- opt.Append("V0");\r
- kINDENT=kTRUE;\r
- }\r
- }\r
-\r
- return (const Char_t*)opt.Data();\r
-}\r
-\r
-\r
+// 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();
+}
+
+