new dielectron tasks from Remi
[u/mrichter/AliRoot.git] / PWGDQ / dielectron / macrosLMEE / AddTask_Remi_LMEEPbPb2011AOD_Cent.C
1 AliAnalysisTask *AddTask_Remi_LMEEPbPb2011AOD_Cent(Char_t* outputFileName="LMEEoutput.root", Bool_t runAll=kFALSE,Bool_t setMC=kFALSE,Bool_t getFromAlien=kFALSE, Bool_t PIDbaseline=kFALSE, Bool_t rejOnly=kTRUE) {
2
3   Bool_t bESDANA=kFALSE; //Autodetect via InputHandler
4   //get the current analysis manager
5   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
6   if (!mgr) {
7         Error("AddTask_Remi_LMEEPbPb2011", "No analysis manager found.");
8         return 0;
9   }
10
11
12 //  create task and add it to the manager
13 //      gSystem->AddIncludePath("$ALICE_ROOT/PWGDQ/dielectron/macrosLMEE");
14
15
16   TString configBasePath("$TRAIN_ROOT/cbaumann_dielectron/");
17   TString trainRoot=gSystem->Getenv("TRAIN_ROOT");
18   //  if (trainRoot.IsNull()) configBasePath= "/home/tanizaki/nfs/LMee_Deflection/";
19   if (trainRoot.IsNull()) configBasePath= "$ALICE_ROOT/PWGDQ/dielectron/macrosLMEE/";
20
21
22   if (getFromAlien &&
23       (!gSystem->Exec("alien_cp alien:///alice/cern.ch/user/c/cbaumann/PWGDQ/dielectron/macrosLMEE/ConfigRemiLMEEPbPb2011AOD.C .")) &&
24       (!gSystem->Exec("alien_cp alien:///alice/cern.ch/user/c/cbaumann/PWGDQ/dielectron/macrosLMEE/LMEECutLibRemi.C ."))
25      ) {
26         configBasePath=Form("%s/",gSystem->pwd());
27   }
28
29   TString configFile("ConfigRemiLMEEPbPb2011AOD.C");
30   TString configLMEECutLib("LMEECutLibRemi.C");
31
32   TString configFilePath(configBasePath+configFile);
33   TString configLMEECutLibPath(configBasePath+configLMEECutLib);
34
35   //AOD Usage currently tested with separate task, to be merged
36   if (mgr->GetInputEventHandler()->IsA()==AliAODInputHandler::Class()){
37         ::Info("AddTaskLMEEPbPb2011", "no dedicated AOD configuration");
38   }
39   else if (mgr->GetInputEventHandler()->IsA()==AliESDInputHandler::Class()){
40         ::Info("AddTaskLMEEPbPb2011AOD","switching on ESD specific code");
41         bESDANA=kTRUE;
42   }
43
44
45   //Do we have an MC handler?
46   Bool_t hasMC=setMC;
47   if (AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler()!=0x0)
48         hasMC=kTRUE;
49
50
51
52   if (!gROOT->GetListOfGlobalFunctions()->FindObject(configLMEECutLib.Data()))
53         gROOT->LoadMacro(configLMEECutLibPath.Data());
54   if (!gROOT->GetListOfGlobalFunctions()->FindObject(configFile.Data()))
55         gROOT->LoadMacro(configFilePath.Data());
56
57
58   LMEECutLibRemi* cutlib = new LMEECutLibRemi();
59   AliAnalysisTaskMultiDielectron *task=new AliAnalysisTaskMultiDielectron("MultiDiEData");
60   if (!hasMC) task->UsePhysicsSelection();
61   task->SetTriggerMask(AliVEvent::kMB+AliVEvent::kCentral+AliVEvent::kSemiCentral);
62 //  task->SelectCollisionCandidates(AliVEvent::kMB+AliVEvent::kCentral+AliVEvent::kSemiCentral);
63 //  task->SetRejectPileup();
64   task->SelectCollisionCandidates(AliVEvent::kAny);  
65   task->SetEventFilter(cutlib->GetEventCuts(LMEECutLibRemi::kPbPb2011TPCandTOF)); //
66
67   //load dielectron configuration file
68
69   //add dielectron analysis with different cuts to the task
70
71
72 if (rejOnly) {
73
74       AliDielectron *lowmass1=ConfigRemiLMEEPbPb2011AOD(1,hasMC,bESDANA);
75       task->AddDielectron(lowmass1);
76       printf("add: %s\n",lowmass1->GetName());
77
78   
79   //  AliDielectron *lowmass2=ConfigRemiLMEEPbPb2011AOD(2,hasMC,bESDANA);
80   //  task->AddDielectron(lowmass2);
81   //  printf("add: %s\n",lowmass2->GetName());
82
83   
84   //  AliDielectron *lowmass3=ConfigRemiLMEEPbPb2011AOD(3,hasMC,bESDANA);
85   //  task->AddDielectron(lowmass3);
86   //  printf("add: %s\n",lowmass3->GetName());
87
88   
89   //  AliDielectron *lowmass4=ConfigRemiLMEEPbPb2011AOD(4,hasMC,bESDANA);
90   //  task->AddDielectron(lowmass4);
91   //  printf("add: %s\n",lowmass4->GetName());
92
93   
94   //  AliDielectron *lowmass5=ConfigRemiLMEEPbPb2011AOD(5,hasMC,bESDANA);
95   //  task->AddDielectron(lowmass5);
96   //  printf("add: %s\n",lowmass5->GetName());
97
98   
99
100 }
101 else {
102   AliDielectron *lowmass4=ConfigRemiLMEEPbPb2011AOD(4,hasMC,bESDANA);
103   task->AddDielectron(lowmass4);
104   printf("add: %s\n",lowmass4->GetName());
105
106
107   AliDielectron *lowmass1=ConfigRemiLMEEPbPb2011AOD(1,hasMC,bESDANA);
108   task->AddDielectron(lowmass1);
109   printf("add: %s\n",lowmass1->GetName());
110
111
112 if (PIDbaseline) {
113         AliDielectron *lowmass7=ConfigRemiLMEEPbPb2011AOD(7,hasMC,bESDANA);
114         task->AddDielectron(lowmass7);
115         printf("add: %s\n",lowmass7->GetName());
116
117 }
118 }
119
120   mgr->AddTask(task);
121
122   //create output container
123   AliAnalysisDataContainer *coutput1 =
124         mgr->CreateContainer("Remi_LMEEPbPb2011_tree",
125                 TTree::Class(),
126                 AliAnalysisManager::kExchangeContainer,
127                 outputFileName);
128
129   AliAnalysisDataContainer *cOutputHist1 =
130         mgr->CreateContainer("Remi_LMEEPbPb2011_out",
131                 TList::Class(),
132                 AliAnalysisManager::kOutputContainer,
133                 outputFileName);
134
135   AliAnalysisDataContainer *cOutputHist2 =
136         mgr->CreateContainer("Remi_LMEEPbPb2011_CF",
137                 TList::Class(),
138                 AliAnalysisManager::kOutputContainer,
139                 outputFileName);
140
141   AliAnalysisDataContainer *cOutputHist3 =
142         mgr->CreateContainer("Remi_EventStatPbPb2011",
143                 TH1D::Class(),
144                 AliAnalysisManager::kOutputContainer,
145                 outputFileName);
146
147
148   mgr->ConnectInput(task,  0, mgr->GetCommonInputContainer());
149   mgr->ConnectOutput(task, 0, coutput1 );
150   mgr->ConnectOutput(task, 1, cOutputHist1);
151   mgr->ConnectOutput(task, 2, cOutputHist2);
152   mgr->ConnectOutput(task, 3, cOutputHist3);
153
154   return task;
155 }