]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGJE/EMCALJetTasks/macros/AddTaskJetV2.C
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWGJE / EMCALJetTasks / macros / AddTaskJetV2.C
CommitLineData
a8ea07c4 1/* AddTask macro for Jet V2 task
eae37c5c 2 * Redmer Alexander Bertens, rbertens@cern.ch
a8ea07c4 3 * Utrecht University, Utrecht, Netherlands */
eae37c5c 4
5AliAnalysisTaskJetV2* AddTaskJetV2(
6 const char *ntracks = "Tracks",
7 const char *nclusters = "",
8 const char *njets = "Jets",
9 const char *nrho = "Rho",
10 Double_t jetradius = 0.2,
11 Double_t jetptcut = 1,
12 Double_t jetareacut = 0.557,
13 const char* type = "TPC",
14 Int_t leadhadtype = 0,
15 const char *taskname = "AliAnalysisTaskJetV2",
16 UInt_t runMode = AliAnalysisTaskJetV2::kGrid,
17 Bool_t fillQA = kTRUE,
18 TString fitOpts = "WLQI",
a8ea07c4 19 UInt_t fitType = AliAnalysisTaskJetV2::kCombined,
eae37c5c 20 TArrayD *centralities = 0x0,
21 TRandom3 *randomizer = 0x0,
2e9c1578 22 Double_t trackptcut = .15,
23 Bool_t LHC10h = kFALSE
eae37c5c 24 )
25{
26 // Get the pointer to the existing analysis manager via the static access method.
27 //==============================================================================
28 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
29 if (!mgr)
30 {
31 ::Error("AddTaskEmcalJetSample", "No analysis manager to connect to.");
32 return NULL;
33 }
34
35 // Check the analysis type using the event handlers connected to the analysis manager.
36 //==============================================================================
37 if (!mgr->GetInputEventHandler())
38 {
39 ::Error("AddTaskEmcalJetSample", "This task requires an input event handler");
40 return NULL;
41 }
42
43 //-------------------------------------------------------
44 // Init the task and do settings
45 //-------------------------------------------------------
46
47 TString name(taskname);
48 if (strcmp(njets,"")) {
49 name += "_";
50 name += njets;
51 }
52 if (strcmp(nrho,"")) {
53 name += "_";
54 name += nrho;
55 }
56 if (!strcmp(type, "TPC"))
57 name += "_TPC";
58 else if (!strcmp(type, "EMCAL"))
59 name += "_EMCAL";
60 else if (!strcmp(type, "USER"))
61 name += "_USER";
62
63 // create instance of the object
64 AliAnalysisTaskJetV2* jetTask = new AliAnalysisTaskJetV2(name, runMode);
65
66 // create and connect data containers
67 AliParticleContainer* partCont = jetTask->AddParticleContainer(ntracks);
68 if(partCont) {
69 partCont->SetName("Tracks");
70 partCont->SetParticlePtCut(trackptcut);
71 }
72 TString tmp(nclusters);
73 AliClusterContainer* clusterCont = 0x0;
74 if(!tmp.IsNull()) {
75 clusterCont = jetTask->AddClusterContainer(nclusters);
76 jetTask->SetAnalysisType(AliAnalysisTaskJetV2::kFull);
77 }
78 AliJetContainer* jetCont = jetTask->AddJetContainer(njets, type, jetradius);
79 if(jetCont) {
80 jetCont->SetName("Jets");
81 jetCont->SetPercAreaCut(jetareacut);
82 jetCont->SetRhoName(nrho);
83 if(partCont) jetCont->ConnectParticleContainer(partCont);
84 if(clusterCont) jetCont->ConnectClusterContainer(clusterCont);
85 }
86
87 // task specific setters
88 jetTask->SetFillQAHistograms(fillQA);
89 jetTask->SetDebugMode(-1);
90 jetTask->SetModulationFitType(fitType);
91 jetTask->SetModulationFitOptions(fitOpts);
92 jetTask->SetModulationFitMinMaxP(.01, 1);
93 // if centralities haven't been specified use defaults
94 if(!centralities) {
95 Double_t c[] = {0., 10., 30., 50., 70., 90.};
96 jetTask->SetCentralityClasses(new TArrayD(sizeof(c)/sizeof(c[0]), c));
97 }
9274f9ad 98 else jetTask->SetCentralityClasses(centralities);
eae37c5c 99 // if a randomized hasn't specified use a safe default
100 if(!randomizer) jetTask->SetRandomSeed(new TRandom3(0));
101
102 // pass the expected run lists to the task. the total list is used for QA plots which are stored per run-number, the semi-good list is used to change the phi acceptance of jets and pico trakcs, and - if an alternatie is provided - switch to a 'small rho' task, which also runs on limited acceptance
103 Int_t totalRuns[] = {167813, 167988, 168066, 168068, 168069, 168076, 168104, 168212, 168311, 168322, 168325, 168341, 168361, 168362, 168458, 168460, 168461, 168992, 169091, 169094, 169138, 169143, 169167, 169417, 169835, 169837, 169838, 169846, 169855, 169858, 169859, 169923, 169956, 170027, 170036, 170081, /* up till here original good TPC list */169975, 169981, 170038, 170040, 170083, 170084, 170085, 170088, 170089, 170091, 170152, 170155, 170159, 170163, 170193, 170195, 170203, 170204, 170205, 170228, 170230, 170264, 170268, 170269, 170270, 170306, 170308, 170309, /* original semi-good tpc list */169415, 169411, 169035, 168988, 168984, 168826, 168777, 168512, 168511, 168467, 168464, 168342, 168310, 168115, 168108, 168107, 167987, 167915, 167903, /*new runs, good according to RCT */ 169238, 169160, 169156, 169148, 169145, 169144 /* run swith missing OROC 8 but seem ok in QA */};
2e9c1578 104
105 Int_t totalRuns10h[] = {139510, 139507, 139505, 139503, 139465, 139438, 139437, 139360, 139329, 139328, 139314, 139310, 139309, 139173, 139107, 139105, 139038, 139037, 139036, 139029, 139028, 138872, 138871, 138870, 138837, 138732, 138730, 138666, 138662, 138653, 138652, 138638, 138624, 138621, 138583, 138582, 138579, 138578, 138534, 138469, 138442, 138439, 138438, 138396, 138364, 138275, 138225, 138201, 138197, 138192, 138190, 137848, 137844, 137752, 137751, 137724, 137722, 137718, 137704, 137693, 137692, 137691, 137686, 137685, 137639, 137638, 137608, 137595, 137549, 137544, 137541, 137539, 137443, 137441, 137440, 137439, 137434, 137432, 137431, 137430, 137366, 137243, 137236, 137235, 137232, 137231, 137230, 137162, 137161, 137135};
106
107 // set the runnumbers for either 10h or 11h
108 (LHC10h) ? jetTask->SetExpectedRuns(new TArrayI(sizeof(totalRuns10h)/sizeof(totalRuns10h[0]), totalRuns10h)) : jetTask->SetExpectedRuns(new TArrayI(sizeof(totalRuns)/sizeof(totalRuns[0]), totalRuns));
eae37c5c 109
110 Int_t semiGoodRuns[] = {169975, 169981, 170038, 170040, 170083, 170084, 170085, 170088, 170089, 170091, 170152, 170155, 170159, 170163, 170193, 170195, 170203, 170204, 170205, 170228, 170230, 170264, 170268, 170269, 170270, 170306, 170308, 170309};
2e9c1578 111
112 // set the semi-good runnumbers for 10h or 11h (10h has no semi-good numbers, so pass a NULL pointer)
113 (LHC10h) ? jetTask->SetExpectedSemiGoodRuns(0x0) : jetTask->SetExpectedSemiGoodRuns(new TArrayI(sizeof(semiGoodRuns)/sizeof(semiGoodRuns[0]), semiGoodRuns));
114
115 // and if 10h, pass this info to the task so acceptance isn't changed
6c3fa11d 116 if(LHC10h) jetTask->SetCollisionType(AliAnalysisTaskJetV2::kPbPb10h);
eae37c5c 117
118 //-------------------------------------------------------
119 // Final settings, pass to manager and set the containers
120 //-------------------------------------------------------
121
122 mgr->AddTask(jetTask);
123
124 // Create containers for input/output
125 AliAnalysisDataContainer *cinput1 = mgr->GetCommonInputContainer() ;
126 TString contname(name);
127 contname+="_PWGJE";
128 AliAnalysisDataContainer *coutput1 = mgr->CreateContainer(contname.Data(),
129 TList::Class(),AliAnalysisManager::kOutputContainer,
130 Form("%s", AliAnalysisManager::GetCommonFileName()));
131 mgr->ConnectInput (jetTask, 0, cinput1 );
132 mgr->ConnectOutput (jetTask, 1, coutput1 );
133
134 switch (runMode) {
135 case AliAnalysisTaskJetV2::kLocal : {
136 gStyle->SetOptFit(1);
137 AliAnalysisDataContainer *coutput2 = mgr->CreateContainer(Form("good_fits_%s", name.Data()),
138 TList::Class(),AliAnalysisManager::kOutputContainer,
139 Form("%s", AliAnalysisManager::GetCommonFileName()));
140 AliAnalysisDataContainer *coutput3 = mgr->CreateContainer(Form("bad_fits_%s", name.Data()),
141 TList::Class(),AliAnalysisManager::kOutputContainer,
142 Form("%s", AliAnalysisManager::GetCommonFileName()));
143 mgr->ConnectOutput (jetTask, 2, coutput2);
144 mgr->ConnectOutput (jetTask, 3, coutput3);
145 } break;
146 default: break;
147 }
148 return jetTask;
149}