]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGDQ/dielectron/macrosJPSI/AddTask_jbook_JPsi.C
added pythia MB as generator=3
[u/mrichter/AliRoot.git] / PWGDQ / dielectron / macrosJPSI / AddTask_jbook_JPsi.C
CommitLineData
359a5e52
JB
1AliAnalysisTask *AddTask_jbook_JPsi(TString config="1",
2 Bool_t gridconf=kFALSE,
ab5dc7f9 3 Bool_t hasMC=kFALSE,
e864c1c3 4 ULong64_t triggers=AliVEvent::kCentral | AliVEvent::kSemiCentral | AliVEvent::kMB,
5 Bool_t bMultiToSingle=kTRUE){
bffbeda1 6
8c06b662 7 //get the current analysis manager
8 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
9 if (!mgr) {
10 Error("AddTask_jbook_JPsi", "No analysis manager found.");
11 return 0;
12 }
bffbeda1 13
8c06b662 14 //Do we have an MC handler?
2d7910f3 15 TString list = gSystem->Getenv("LIST");
ab5dc7f9 16 if(!list.IsNull()) {
17 if( list.Contains("LHC10h") || list.Contains("LHC11h") ) hasMC=kFALSE;
18 if( list.Contains("LHC11a10") || list.Contains("LHC12a17") ) hasMC=kTRUE;
19 }
2d7910f3 20
8c06b662 21 //Do we have an AOD handler?
22 Bool_t isAOD=(mgr->GetInputEventHandler()->IsA()==AliAODInputHandler::Class() ? kTRUE : kFALSE);
94c26f30 23
d6aec652 24 // set AOD debug levels
25 if(isAOD) {
26 mgr->AddClassDebug("AliAODTrack", AliLog::kFatal);
bffbeda1 27 mgr->AddClassDebug("AliAODpidUtil", AliLog::kInfo);
d6aec652 28 }
bffbeda1 29
8c06b662 30 //set config file name
94c26f30 31 TString configFile("");
32 printf("%s \n",gSystem->pwd());
33 TString trainRoot=gSystem->Getenv("TRAIN_ROOT");
359a5e52
JB
34
35 // gsi config
36 if (!trainRoot.IsNull()) configFile="$TRAIN_ROOT/jbook_jpsi/ConfigJpsi_jb_PbPb.C";
37 // alien config
f6a71c64 38 else if(!gSystem->Exec("alien_cp alien:///alice/cern.ch/user/j/jbook/PWGDQ/dielectron/macrosJPSI/ConfigJpsi_jb_PbPb.C .")) {
39 gSystem->Exec(Form("ls -l %s",gSystem->pwd()));
359a5e52 40 configFile=Form("%s/ConfigJpsi_jb_PbPb.C",gSystem->pwd());
f6a71c64 41 }
42 else {
43 printf("ERROR: couldn't copy file %s from grid \n",
44 "alien:///alice/cern.ch/user/j/jbook/PWGDQ/dielectron/macrosJPSI/ConfigJpsi_jb_PbPb.C");
45 return;
46 }
94c26f30 47
359a5e52 48 // aliroot config
1d9e26fc 49 if(!gridconf && trainRoot.IsNull())
94c26f30 50 configFile="$ALICE_ROOT/PWGDQ/dielectron/macrosJPSI/ConfigJpsi_jb_PbPb.C"; // aliroot config
8c06b662 51
94c26f30 52
51efbccb 53 // trigger selection
bffbeda1 54 ULong64_t triggerSets[]={AliVEvent::kCentral , AliVEvent::kSemiCentral , AliVEvent::kMB,
55 AliVEvent::kCentral | AliVEvent::kSemiCentral | AliVEvent::kMB};
1d9e26fc 56 const char* triggerNames[]={"Central","SemiCentral","MB","ALL"};
f1be3e2e 57 const char* onlineRejection[]={"","CCENT","",""};
8c06b662 58
bffbeda1 59 // find out the configured triggers
60 Int_t j=0;
61 for(j=0; j<4; j++) {
62 if(triggers!=triggerSets[j]) continue;
63 else break;
64 }
65
1d9e26fc 66 // print overall configuration
bffbeda1 67 printf("production: %s MC: %d \n", list.Data(),hasMC);
68 printf("triggers: %s \n", triggerNames[j] );
69 printf("config: %s Grid: %d \n",configFile.Data(),gridconf);
70
e864c1c3 71 //create task(s)
72 AliAnalysisTaskMultiDielectron *task;
73 if(!bMultiToSingle) {
74 // create one multi task
75 task = new AliAnalysisTaskMultiDielectron(Form("MultiDieJB"));
76 task->SetBeamEnergy(1380.);
77 task->SetTriggerMask(triggers);
78 if(strlen(onlineRejection[j])) task->SetFiredTriggerName(onlineRejection[j],kTRUE);
79 if(!hasMC) task->UsePhysicsSelection();
80 }
81
82 // event filter
83 AliDielectronEventCuts *eventCuts=new AliDielectronEventCuts("vertex","vertex");
84 if(isAOD) eventCuts->SetVertexType(AliDielectronEventCuts::kVtxAny);
85 eventCuts->SetRequireVertex();
86 eventCuts->SetMinVtxContributors(1);
87 if(hasMC) eventCuts->SetVertexZ(-10.,+10.); //for data this is done by in the config
88 eventCuts->SetCentralityRange(0,90.);
89 eventCuts->Print();
90 if(!bMultiToSingle) task->SetEventFilter(eventCuts);
91
359a5e52 92 //load dielectron configuration file (only once)
bffbeda1 93 TString checkconfig="ConfigJpsi_jb_PbPb";
94 if (!gROOT->GetListOfGlobalFunctions()->FindObject(checkconfig.Data()))
95 gROOT->LoadMacro(configFile.Data());
96
1d9e26fc 97 //define default output container
98 TString containerName = "JPSI.root";
99
bffbeda1 100 //add dielectron analysis with different cuts to the task
ab5dc7f9 101 for (Int_t i=0; i<nDie; ++i) { //nDie defined in config file
1d9e26fc 102
359a5e52 103 //only configs switched ON will pass
62b050c9 104 if(config.Length()<=i || config(i,1)!="1") { printf(" %d switched OFF \n",i); continue; }
359a5e52 105
1d9e26fc 106 // load configuration
ab5dc7f9 107 AliDielectron *jpsi=ConfigJpsi_jb_PbPb(i,hasMC,triggers);
1d9e26fc 108 if(!jpsi) continue;
109
110 // create unique title
111 TString unitit = Form("%s_%s",triggerNames[j],jpsi->GetName());
112
359a5e52 113 // create single tasks instead of one multi task (decreasing size of CF container)
e864c1c3 114 if(bMultiToSingle) {
115 task = new AliAnalysisTaskMultiDielectron(Form("MultiDieJB_%s",unitit.Data()));
116 task->SetBeamEnergy(1380.);
117 task->SetTriggerMask(triggers);
118 if(strlen(onlineRejection[j])) task->SetFiredTriggerName(onlineRejection[j],kTRUE);
119 if(!hasMC) task->UsePhysicsSelection();
120 }
1d9e26fc 121
122 // add dielectron to the task and manager
123 task->AddDielectron(jpsi);
1d9e26fc 124
e864c1c3 125 // multiple output connection
126 if(bMultiToSingle) {
127 task->SetEventFilter(eventCuts);
128 mgr->AddTask(task);
129
130 //create output sub containers
131 unitit.Prepend("jbook_QA_");
132 AliAnalysisDataContainer *cOutputHist1 =
133 mgr->CreateContainer(unitit.Data(), TList::Class(),AliAnalysisManager::kOutputContainer,containerName.Data());
134 unitit.ReplaceAll("_QA_","_CF_");
135 AliAnalysisDataContainer *cOutputHist2 =
136 mgr->CreateContainer(unitit.Data(), TList::Class(),AliAnalysisManager::kOutputContainer,containerName.Data());
137 unitit.ReplaceAll("_CF_","_EventStat_");
138 AliAnalysisDataContainer *cOutputHist3 =
139 mgr->CreateContainer(unitit.Data(), TH1D::Class(), AliAnalysisManager::kOutputContainer,containerName.Data());
140
141 mgr->ConnectInput(task, 0, mgr->GetCommonInputContainer());
142 // mgr->ConnectOutput(task, 0, coutput1 );
143 mgr->ConnectOutput(task, 1, cOutputHist1);
144 mgr->ConnectOutput(task, 2, cOutputHist2);
145 mgr->ConnectOutput(task, 3, cOutputHist3);
146 }
147
148 printf(" %s added\n",jpsi->GetName());
149
150 } //end : loop over configs
151
152
153 // multiple output connection
154 if(!bMultiToSingle) {
155 mgr->AddTask(task);
156
1d9e26fc 157 //create output sub containers
158 AliAnalysisDataContainer *cOutputHist1 =
e864c1c3 159 mgr->CreateContainer("jbook_QA", TList::Class(), AliAnalysisManager::kOutputContainer, containerName.Data());
1d9e26fc 160 AliAnalysisDataContainer *cOutputHist2 =
e864c1c3 161 mgr->CreateContainer("jbook_CF", TList::Class(), AliAnalysisManager::kOutputContainer, containerName.Data());
1d9e26fc 162 AliAnalysisDataContainer *cOutputHist3 =
e864c1c3 163 mgr->CreateContainer("jbook_EventStat", TH1D::Class(), AliAnalysisManager::kOutputContainer, containerName.Data());
1d9e26fc 164
165 mgr->ConnectInput(task, 0, mgr->GetCommonInputContainer());
e864c1c3 166 // mgr->ConnectOutput(task, 0, coutput1 );
1d9e26fc 167 mgr->ConnectOutput(task, 1, cOutputHist1);
168 mgr->ConnectOutput(task, 2, cOutputHist2);
169 mgr->ConnectOutput(task, 3, cOutputHist3);
51efbccb 170 }
bffbeda1 171
bffbeda1 172
173 return task;
8c06b662 174}