]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGDQ/dielectron/macrosLMEE/AddTask_taku_LMEEPbPb2011SemiCent2.C
update from pr task : sjena
[u/mrichter/AliRoot.git] / PWGDQ / dielectron / macrosLMEE / AddTask_taku_LMEEPbPb2011SemiCent2.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_LMEEPbPb2011SemiCent2(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("MultiDiETGDataSemiCent2");
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[3];
60   PairCutType[1] = PairCutTypeDef[6];
61   PairCutType[2] = PairCutTypeDef[9];
62   PairCutType[3] = PairCutTypeDef[12];
63   PairCutType[4] = PairCutTypeDef[15];
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     //////// this is for test 
85     AliDielectron *lowmass3=ConfigTakuLMEEPbPb2011(3,hasMC,enableCF);
86     lowmass3->SetUseKF(kFALSE);
87     task->AddDielectron(lowmass3);
88     printf("add: %s\n",lowmass3->GetName());
89
90     ///////////////////////////
91
92     AliDielectron *lowmass6=ConfigTakuLMEEPbPb2011(6,hasMC,enableCF);
93     lowmass6->SetUseKF(kFALSE);
94     task->AddDielectron(lowmass6);
95     printf("add: %s\n",lowmass6->GetName());
96
97
98     ///////////////////////////
99
100
101     AliDielectron *lowmass9=ConfigTakuLMEEPbPb2011(9,hasMC,enableCF);
102     lowmass9->SetUseKF(kFALSE);
103     task->AddDielectron(lowmass9);
104     printf("add: %s\n",lowmass9->GetName());
105
106
107     ///////////////////////////
108
109     AliDielectron *lowmass12=ConfigTakuLMEEPbPb2011(12,hasMC,enableCF);
110     lowmass12->SetUseKF(kFALSE);
111     task->AddDielectron(lowmass12);
112     printf("add: %s\n",lowmass12->GetName());
113
114     ///////////////////////////
115
116
117
118     AliDielectron *lowmass15=ConfigTakuLMEEPbPb2011(15,hasMC,enableCF);
119     lowmass15->SetUseKF(kFALSE);
120     task->AddDielectron(lowmass15);
121     printf("add: %s\n",lowmass15->GetName());
122
123   }
124
125   mgr->AddTask(task);
126
127   //create output container
128   AliAnalysisDataContainer *coutput1 =
129     mgr->CreateContainer("taku_LMEEPbPb2011_semicent2_tree",
130         TTree::Class(),
131         AliAnalysisManager::kExchangeContainer,
132         "taku_LMEEPbPb2011_semicent2_default.root");
133
134   AliAnalysisDataContainer *cOutputHist1 =
135     mgr->CreateContainer("taku_LMEEPbPb2011_semicent2_out",
136         TList::Class(),
137         AliAnalysisManager::kOutputContainer,
138         "taku_LMEEPbPb2011_semicent2_out.root");
139   
140   AliAnalysisDataContainer *cOutputHist2 = 0x0;
141   if (enableCF) {
142     cOutputHist2 = 
143       mgr->CreateContainer("taku_LMEEPbPb2011_semicent2_CF",
144           TList::Class(),
145           AliAnalysisManager::kOutputContainer,
146           "taku_LMEEPbPb2011_semicent2_out.root");
147
148   }
149   AliAnalysisDataContainer *cOutputHist3 =
150     mgr->CreateContainer("taku_EventStatPbPb2011_semicent2",
151         TH1D::Class(),
152         AliAnalysisManager::kOutputContainer,
153         "taku_LMEEPbPb2011_semicent2_out.root");
154
155
156   mgr->ConnectInput(task,  0, mgr->GetCommonInputContainer());
157   mgr->ConnectOutput(task, 0, coutput1 );
158   mgr->ConnectOutput(task, 1, cOutputHist1);
159   if (enableCF) {
160     mgr->ConnectOutput(task, 2, cOutputHist2);
161   }
162   mgr->ConnectOutput(task, 3, cOutputHist3);
163
164   return task;
165 }