-// 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("libPWG1.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 "PWG1/TRD/macros/AddTRDcheckESD.C"
-#include "PWG1/TRD/macros/AddTRDinfoGen.C"
-#include "PWG1/TRD/macros/AddTRDcheckDET.C"
-#include "PWG1/TRD/macros/AddTRDefficiency.C"
-#include "PWG1/TRD/macros/AddTRDresolution.C"
-#include "PWG1/TRD/macros/AddTRDcheckPID.C"
-#include "PWG1/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/PWG1/TRD/macros")
-{
- AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
- if(!mgr) {
- Error("AddTrainPerformanceTRD", "AliAnalysisManager not set!");
- return kFALSE;
- }
-
- // TRD data containers
- AliAnalysisDataContainer *ci[AliTRDpwg1Helper::kNOutSlots];
- AliAnalysisDataContainer *ce[5];
-
- Info("AddTrainPerformanceTRD", Form("Add Macros taken from %s", addMacroPath));
- Info("AddTrainPerformanceTRD", Form("TRD wagons \"%s\"", trd));
- Int_t bitmap = AliTRDpwg1Helper::ParseOptions(trd);
- for(Int_t it=0; it<AliTRDpwg1Helper::kNTRDQATASKS; it++){
- if(gROOT->LoadMacro(Form("%s/Add%s.C+", addMacroPath, TString(AliTRDpwg1Helper::TaskClassName(it))(3,20).Data()))) {
- Error("AddTrainPerformanceTRD()", Form("Error loading %s task.", AliTRDpwg1Helper::TaskClassName(it)));
- return kFALSE;
- }
- if(!AliTRDpwg1Helper::DoTask(it, bitmap)) continue;
-
- switch(it){
- case AliTRDpwg1Helper::kCheckESD:
- AddTRDcheckESD(mgr); break;
- case AliTRDpwg1Helper::kInfoGen:
- AddTRDinfoGen(mgr, 0, NULL, ci); break;
- case AliTRDpwg1Helper::kCheckDET:
- // map slots
- ce[0]=ci[AliTRDpwg1Helper::kEventInfo];
- ce[1]=ci[AliTRDpwg1Helper::kTracksBarrel];
- ce[2]=ci[AliTRDpwg1Helper::kTracksSA];
- ce[3]=ci[AliTRDpwg1Helper::kTracksKink];
- AddTRDcheckDET(mgr, bitmap, ce);
- break;
- case AliTRDpwg1Helper::kEfficiency:
- // map slots
- ce[0]=ci[AliTRDpwg1Helper::kTracksBarrel];
- ce[1]=ci[AliTRDpwg1Helper::kTracksSA];
- ce[2]=ci[AliTRDpwg1Helper::kTracksKink];
- AddTRDefficiency(mgr, bitmap, ce);
- break;
- case AliTRDpwg1Helper::kResolution:
- // map slots
- ce[0]=ci[AliTRDpwg1Helper::kTracksBarrel];
- ce[1]=ci[AliTRDpwg1Helper::kTracksSA];
- ce[2]=ci[AliTRDpwg1Helper::kTracksKink];
- AddTRDresolution(mgr, bitmap, ce);
- break;
- case AliTRDpwg1Helper::kCheckPID:
- // map slots
- ce[0]=ci[AliTRDpwg1Helper::kTracksBarrel];
- ce[1]=ci[AliTRDpwg1Helper::kV0List];
- AddTRDcheckPID(mgr, bitmap, ce, &ce[2]);
- break;
- case AliTRDpwg1Helper::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();
-}
-
-
+// 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("libPWG1.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 "PWG1/TRD/macros/AddTRDcheckESD.C"\r
+#include "PWG1/TRD/macros/AddTRDinfoGen.C"\r
+#include "PWG1/TRD/macros/AddTRDcheckDET.C"\r
+#include "PWG1/TRD/macros/AddTRDefficiency.C"\r
+#include "PWG1/TRD/macros/AddTRDresolution.C"\r
+#include "PWG1/TRD/macros/AddTRDcheckPID.C"\r
+#include "PWG1/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/PWG1/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[AliTRDpwg1Helper::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 = AliTRDpwg1Helper::ParseOptions(trd);\r
+ for(Int_t it=0; it<AliTRDpwg1Helper::kNTRDQATASKS; it++){\r
+ if(gROOT->LoadMacro(Form("%s/Add%s.C+", addMacroPath, TString(AliTRDpwg1Helper::TaskClassName(it))(3,20).Data()))) {\r
+ Error("AddTrainPerformanceTRD()", Form("Error loading %s task.", AliTRDpwg1Helper::TaskClassName(it)));\r
+ return kFALSE;\r
+ } \r
+ if(!AliTRDpwg1Helper::DoTask(it, bitmap)) continue;\r
+\r
+ switch(it){\r
+ case AliTRDpwg1Helper::kCheckESD:\r
+ AddTRDcheckESD(mgr); break;\r
+ case AliTRDpwg1Helper::kInfoGen:\r
+ AddTRDinfoGen(mgr, 0, NULL, ci); break;\r
+ case AliTRDpwg1Helper::kCheckDET:\r
+ // map slots\r
+ ce[0]=ci[AliTRDpwg1Helper::kTracksBarrel];\r
+ ce[1]=ci[AliTRDpwg1Helper::kTracksSA];\r
+ ce[2]=ci[AliTRDpwg1Helper::kTracksKink];\r
+ ce[3]=ci[AliTRDpwg1Helper::kEventInfo];\r
+ AddTRDcheckDET(mgr, bitmap, ce);\r
+ break;\r
+ case AliTRDpwg1Helper::kEfficiency:\r
+ // map slots\r
+ ce[0]=ci[AliTRDpwg1Helper::kTracksBarrel];\r
+ ce[1]=ci[AliTRDpwg1Helper::kTracksSA];\r
+ ce[2]=ci[AliTRDpwg1Helper::kTracksKink];\r
+ ce[3]=ci[AliTRDpwg1Helper::kEventInfo];\r
+ AddTRDefficiency(mgr, bitmap, ce);\r
+ break;\r
+ case AliTRDpwg1Helper::kResolution:\r
+ // map slots\r
+ ce[0]=ci[AliTRDpwg1Helper::kTracksBarrel];\r
+ ce[1]=ci[AliTRDpwg1Helper::kTracksSA];\r
+ ce[2]=ci[AliTRDpwg1Helper::kTracksKink];\r
+ ce[3]=ci[AliTRDpwg1Helper::kEventInfo];\r
+ AddTRDresolution(mgr, bitmap, ce); \r
+ break;\r
+ case AliTRDpwg1Helper::kCheckPID:\r
+ // map slots\r
+ ce[0]=ci[AliTRDpwg1Helper::kTracksBarrel];\r
+ ce[1]=ci[AliTRDpwg1Helper::kEventInfo];\r
+ ce[2]=ci[AliTRDpwg1Helper::kV0List];\r
+ AddTRDcheckPID(mgr, bitmap, ce, &ce[3]);\r
+ break;\r
+ case AliTRDpwg1Helper::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