]>
Commit | Line | Data |
---|---|---|
359a5e52 JB |
1 | AliAnalysisTask *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 | } |