updates from Taku
[u/mrichter/AliRoot.git] / PWGDQ / dielectron / macrosLMEE / AddTask_taku_LMEEPbPb2011Cent.C
1 /*
2   in real data. argument should be kFALSE, kFALSE, kFALSE,
3   in siml data. argument should be kFALSE, kTRUE, kTRUE,
4
5 */
6 AliAnalysisTask *AddTask_taku_LMEEPbPb2011Cent(Bool_t runRejection=kFALSE, Bool_t setMC=kFALSE,Bool_t enableCF=kFALSE){
7   //get the current analysis manager
8   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
9   if (!mgr) {
10     Error("AddTask_taku_LMEEPbPb2011", "No analysis manager found.");
11     return 0;
12   }
13
14   //create config File names: TRAIN_ROOT is for running on GSI train, 
15   // ALICE_ROOT for CERN Lego trains
16   TString configBasePath("$TRAIN_ROOT/cbaumann_dielectron/");
17   TString trainRoot=gSystem->Getenv("TRAIN_ROOT");                                                                            
18   if (trainRoot.IsNull()) configBasePath= "$ALICE_ROOT/PWGDQ/dielectron/macrosLMEE/";
19   TString configFile("ConfigTakuLMEEPbPb2011.C");
20   TString configLMEECutLib("LMEECutLibTaku.C");
21
22   TString configFilePath(configBasePath+configFile);
23   TString configLMEECutLibPath(configBasePath+configLMEECutLib);
24
25   //AOD Usage currently tested with separate task, to be merged
26   if (mgr->GetInputEventHandler()->IsA()==AliAODInputHandler::Class()){
27     ::Info("AddTaskLMEEPbPb2011", "no dedicated AOD configuration");
28   }
29
30   //Do we have an MC handler?
31   Bool_t hasMC=setMC;
32   if (AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler()!=0x0){
33     hasMC=kTRUE;
34   }
35   
36   if (!gROOT->GetListOfGlobalFunctions()->FindObject(configLMEECutLib.Data()))
37     gROOT->LoadMacro(configLMEECutLibPath.Data());
38   if (!gROOT->GetListOfGlobalFunctions()->FindObject(configFile.Data()))
39     gROOT->LoadMacro(configFilePath.Data());
40
41   LMEECutLib* cutlib = new LMEECutLib();
42   cutlib->SetMCFlag(hasMC);
43   AliAnalysisTaskMultiDielectronTG *task=new AliAnalysisTaskMultiDielectronTG("MultiDiEDataCent");
44
45   ////default cutter defined in ConfigTakuLMEEPbPb2011.C
46   Int_t PairCutTypeDef[20]={0,
47                             0,0,0, //no pair cuts
48                             1,1,1, //reject from arrays by op cuts
49                             2,2,2, //reject from arrays by phiv cuts
50                             3,3,3, //pair-by-pair cuts by op
51                             4,4,4, //pair-by-pair cuts by phiv
52                             0,0,0,
53                             0};
54
55   Int_t PairCutType[20]={0};
56   PairCutType[0] = PairCutTypeDef[1];
57   PairCutType[1] = PairCutTypeDef[4];
58   PairCutType[2] = PairCutTypeDef[7];
59   PairCutType[3] = PairCutTypeDef[10];
60   PairCutType[4] = PairCutTypeDef[13];
61
62   if (!hasMC){ 
63     task->UsePhysicsSelection();
64   }
65   task->SetTriggerMask(AliVEvent::kMB+AliVEvent::kCentral+AliVEvent::kSemiCentral);
66   task->SetEventFilter(cutlib->GetEventCuts(LMEECutLib::kPbPb2011TPCandTOF)); //
67   task->RejectConversion(2.0);
68   task->RejectOP(0.035);
69   task->SetPairCuts(PairCutType);
70   task->EnableV0mixing(kFALSE);
71   task->SetRejBGPairs(kFALSE, kTRUE);
72
73   //load dielectron configuration file
74   //add dielectron analysis with different cuts to the task
75   if (runRejection) {
76     AliDielectron *lowmass4=ConfigTakuLMEEPbPb2011(4,hasMC,enableCF);
77     task->AddDielectron(lowmass4);
78     printf("add: %s\n",lowmass4->GetName());
79   }
80   else {
81
82     AliDielectron *lowmass1=ConfigTakuLMEEPbPb2011(1,hasMC,enableCF);
83     lowmass1->SetUseKF(kFALSE);
84     task->AddDielectron(lowmass1);
85     printf("add: %s\n",lowmass1->GetName());
86
87     ///////////////////////////
88
89     AliDielectron *lowmass4=ConfigTakuLMEEPbPb2011(4,hasMC,enableCF);
90     lowmass4->SetUseKF(kFALSE);
91     task->AddDielectron(lowmass4);
92     printf("add: %s\n",lowmass4->GetName());
93     ///////////////////////////
94
95     AliDielectron *lowmass7=ConfigTakuLMEEPbPb2011(7,hasMC,enableCF);
96     lowmass7->SetUseKF(kFALSE);
97     task->AddDielectron(lowmass7);
98     printf("add: %s\n",lowmass7->GetName());
99
100     ///////////////////////////
101
102     AliDielectron *lowmass10=ConfigTakuLMEEPbPb2011(10,hasMC,enableCF);
103     lowmass10->SetUseKF(kFALSE);
104     task->AddDielectron(lowmass10);
105     printf("add: %s\n",lowmass10->GetName());
106
107     ///////////////////////////
108
109     AliDielectron *lowmass13=ConfigTakuLMEEPbPb2011(13,hasMC,enableCF);
110     lowmass13->SetUseKF(kFALSE);
111     task->AddDielectron(lowmass13);
112     printf("add: %s\n",lowmass13->GetName());
113
114   }
115
116   mgr->AddTask(task);
117
118   //create output container
119   AliAnalysisDataContainer *coutput1 =
120     mgr->CreateContainer("taku_LMEEPbPb2011_cent_tree",
121         TTree::Class(),
122         AliAnalysisManager::kExchangeContainer,
123         "taku_LMEEPbPb2011_cent_default.root");
124
125   AliAnalysisDataContainer *cOutputHist1 =
126     mgr->CreateContainer("taku_LMEEPbPb2011_cent_out",
127         TList::Class(),
128         AliAnalysisManager::kOutputContainer,
129         "taku_LMEEPbPb2011_cent_out.root");
130   
131   AliAnalysisDataContainer *cOutputHist2 = 0x0;
132   if (enableCF) {
133     cOutputHist2 = 
134       mgr->CreateContainer("taku_LMEEPbPb2011_cent_CF",
135           TList::Class(),
136           AliAnalysisManager::kOutputContainer,
137           "taku_LMEEPbPb2011_cent_out.root");
138
139   }
140   AliAnalysisDataContainer *cOutputHist3 =
141     mgr->CreateContainer("taku_EventStatPbPb2011_cent",
142         TH1D::Class(),
143         AliAnalysisManager::kOutputContainer,
144         "taku_LMEEPbPb2011_cent_out.root");
145
146
147   mgr->ConnectInput(task,  0, mgr->GetCommonInputContainer());
148   mgr->ConnectOutput(task, 0, coutput1 );
149   mgr->ConnectOutput(task, 1, cOutputHist1);
150   if (enableCF) {
151     mgr->ConnectOutput(task, 2, cOutputHist2);
152   }
153   mgr->ConnectOutput(task, 3, cOutputHist3);
154
155   return task;
156 }