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