]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGDQ/dielectron/macrosLMEE/AddTask_taku_LMEEPbPb2011Cent.C
Merge branch 'feature-movesplit'
[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     if(!gROOT->GetClass("LMEECutLibTaku")){
38       gROOT->LoadMacro(configLMEECutLibPath.Data());
39     }
40   }
41   if (!gROOT->GetListOfGlobalFunctions()->FindObject(configFile.Data())){
42     gROOT->LoadMacro(configFilePath.Data());
43   }
44   LMEECutLibTaku* cutlib = new LMEECutLibTaku();
45   cutlib->SetMCFlag(hasMC);
46   AliAnalysisTaskMultiDielectronTG *task=new AliAnalysisTaskMultiDielectronTG("MultiDiETGDataCent");
47
48   ////default cutter defined in ConfigTakuLMEEPbPb2011.C
49   Int_t PairCutTypeDef[20]={0,
50                             0,0,0, //no pair cuts
51                             1,1,1, //reject from arrays by op cuts
52                             2,2,2, //reject from arrays by phiv cuts
53                             3,3,3, //pair-by-pair cuts by op
54                             4,4,4, //pair-by-pair cuts by phiv
55                             0,0,0,
56                             0};
57
58   Int_t PairCutType[20]={0};
59   PairCutType[0] = PairCutTypeDef[1];
60   PairCutType[1] = PairCutTypeDef[4];
61   PairCutType[2] = PairCutTypeDef[7];
62   PairCutType[3] = PairCutTypeDef[10];
63   PairCutType[4] = PairCutTypeDef[13];
64
65   if (!hasMC){ 
66     task->UsePhysicsSelection();
67   }
68   task->SetTriggerMask(AliVEvent::kMB+AliVEvent::kCentral+AliVEvent::kSemiCentral);
69   task->SetEventFilter(cutlib->GetEventCuts(LMEECutLibTaku::kPbPb2011TPCandTOF)); //
70   task->RejectConversion(2.0, 0.3);
71   task->RejectOP(0.035);
72   task->SetPairCuts(PairCutType);
73   task->EnableV0mixing(kFALSE);
74   task->SetRejBGPairs(kFALSE, kTRUE);
75
76   //load dielectron configuration file
77   //add dielectron analysis with different cuts to the task
78   if (runRejection) {
79     AliDielectron *lowmass4=ConfigTakuLMEEPbPb2011(4,hasMC,enableCF);
80     task->AddDielectron(lowmass4);
81     printf("add: %s\n",lowmass4->GetName());
82   }
83   else {
84
85     AliDielectron *lowmass1=ConfigTakuLMEEPbPb2011(1,hasMC,enableCF);
86     lowmass1->SetUseKF(kFALSE);
87     task->AddDielectron(lowmass1);
88     printf("add: %s\n",lowmass1->GetName());
89
90     ///////////////////////////
91
92     AliDielectron *lowmass4=ConfigTakuLMEEPbPb2011(4,hasMC,enableCF);
93     lowmass4->SetUseKF(kFALSE);
94     task->AddDielectron(lowmass4);
95     printf("add: %s\n",lowmass4->GetName());
96     ///////////////////////////
97
98     AliDielectron *lowmass7=ConfigTakuLMEEPbPb2011(7,hasMC,enableCF);
99     lowmass7->SetUseKF(kFALSE);
100     task->AddDielectron(lowmass7);
101     printf("add: %s\n",lowmass7->GetName());
102
103     ///////////////////////////
104
105     AliDielectron *lowmass10=ConfigTakuLMEEPbPb2011(10,hasMC,enableCF);
106     lowmass10->SetUseKF(kFALSE);
107     task->AddDielectron(lowmass10);
108     printf("add: %s\n",lowmass10->GetName());
109
110     ///////////////////////////
111
112     AliDielectron *lowmass13=ConfigTakuLMEEPbPb2011(13,hasMC,enableCF);
113     lowmass13->SetUseKF(kFALSE);
114     task->AddDielectron(lowmass13);
115     printf("add: %s\n",lowmass13->GetName());
116
117   }
118
119   mgr->AddTask(task);
120
121   //create output container
122   AliAnalysisDataContainer *coutput1 =
123     mgr->CreateContainer("taku_LMEEPbPb2011_cent_tree",
124         TTree::Class(),
125         AliAnalysisManager::kExchangeContainer,
126         "taku_LMEEPbPb2011_cent_default.root");
127
128   AliAnalysisDataContainer *cOutputHist1 =
129     mgr->CreateContainer("taku_LMEEPbPb2011_cent_out",
130         TList::Class(),
131         AliAnalysisManager::kOutputContainer,
132         "taku_LMEEPbPb2011_cent_out.root");
133   
134   AliAnalysisDataContainer *cOutputHist2 = 0x0;
135   if (enableCF) {
136     cOutputHist2 = 
137       mgr->CreateContainer("taku_LMEEPbPb2011_cent_CF",
138           TList::Class(),
139           AliAnalysisManager::kOutputContainer,
140           "taku_LMEEPbPb2011_cent_out.root");
141
142   }
143   AliAnalysisDataContainer *cOutputHist3 =
144     mgr->CreateContainer("taku_EventStatPbPb2011_cent",
145         TH1D::Class(),
146         AliAnalysisManager::kOutputContainer,
147         "taku_LMEEPbPb2011_cent_out.root");
148
149
150   mgr->ConnectInput(task,  0, mgr->GetCommonInputContainer());
151   mgr->ConnectOutput(task, 0, coutput1 );
152   mgr->ConnectOutput(task, 1, cOutputHist1);
153   if (enableCF) {
154     mgr->ConnectOutput(task, 2, cOutputHist2);
155   }
156   mgr->ConnectOutput(task, 3, cOutputHist3);
157
158   return task;
159 }