]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGJE/EMCALJetTasks/macros/AddTaskRhoVnModulation.C
Add protection against ghostArea==0
[u/mrichter/AliRoot.git] / PWGJE / EMCALJetTasks / macros / AddTaskRhoVnModulation.C
1 /*
2  * AddTask macro for class 
3  * Redmer Alexander Bertens, rbertens@cern.ch
4  * Utrecht University, Utrecht, Netherlands
5  *
6  * Note: this macro is pretty much a copy of AddTaskEmcalJetSample.C
7  *
8  */
9
10 AliAnalysisTaskRhoVnModulation* AddTaskRhoVnModulation(
11   const char *ntracks            = "Tracks",
12   const char *nclusters          = "",
13   const char *njets              = "Jets",
14   const char *nrho               = "Rho",
15   Double_t   jetradius          = 0.2,
16   Double_t   jetptcut           = 1,
17   Double_t   jetareacut         = 0.557,
18   const char* type              = "TPC",
19   Int_t      leadhadtype        = 0,
20   const char *taskname           = "AliAnalysisTaskRhoVnModulation",
21   UInt_t     runMode            = AliAnalysisTaskRhoVnModulation::kGrid,
22   Bool_t     fillQA             = kTRUE,
23   TString    fitOpts            = "WLQI",
24   UInt_t     fitType            = AliAnalysisTaskRhoVnModulation::kFourierSeries,
25   TArrayI    *centralities      = 0x0,
26   TRandom3   *randomizer        = 0x0,
27   Double_t   trackptcut         = .15
28   )
29 {  
30   // Get the pointer to the existing analysis manager via the static access method.
31   //==============================================================================
32   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
33   if (!mgr)
34   {
35     ::Error("AddTaskEmcalJetSample", "No analysis manager to connect to.");
36     return NULL;
37   }  
38   
39   // Check the analysis type using the event handlers connected to the analysis manager.
40   //==============================================================================
41   if (!mgr->GetInputEventHandler())
42   {
43     ::Error("AddTaskEmcalJetSample", "This task requires an input event handler");
44     return NULL;
45   }
46   
47   //-------------------------------------------------------
48   // Init the task and do settings
49   //-------------------------------------------------------
50
51   TString name(taskname);
52   if (strcmp(njets,"")) {
53     name += "_";
54     name += njets;
55   }
56   if (strcmp(nrho,"")) {
57     name += "_";
58     name += nrho;
59   }
60   if (!strcmp(type, "TPC"))
61     name += "_TPC";
62   else if (!strcmp(type, "EMCAL"))
63     name += "_EMCAL";
64   else if (!strcmp(type, "USER")) 
65     name += "_USER";
66
67   AliAnalysisTaskRhoVnModulation* jetTask = new AliAnalysisTaskRhoVnModulation(name, runMode);
68   // inherited setters
69   AliParticleContainer* partCont = jetTask->AddParticleContainer(ntracks);
70   if(partCont) {
71       partCont->SetName("Tracks");
72       partCont->SetParticlePtCut(trackptcut);
73   }
74   AliJetContainer* jetCont = jetTask->AddJetContainer(njets, type, jetradius);
75   if(jetCont) {
76       jetCont->SetName("Jets");
77       jetCont->SetPercAreaCut(jetareacut);
78       jetCont->SetRhoName(nrho);
79       jetCont->ConnectParticleContainer(partCont);
80   }
81   // task specific setters
82   jetTask->SetFillQAHistograms(fillQA);
83   jetTask->SetDebugMode(-1);
84   jetTask->SetModulationFitType(fitType);
85   jetTask->SetModulationFitOptions(fitOpts);
86   jetTask->SetModulationFitMinMaxP(.001, 1);
87   jetTask->SetRandomConeRadius(jetradius);
88   // if centralities haven't been specified use defaults
89   if(!centralities) {
90      Int_t c[] = {0, 10, 30, 50, 70, 90};
91      jetTask->SetCentralityClasses(new TArrayI(sizeof(c)/sizeof(c[0]), c));
92   }
93   // if a randomized hasn't specified use a safe default 
94   if(!randomizer) jetTask->SetRandomSeed(new TRandom3(0));
95
96
97
98
99   //-------------------------------------------------------
100   // Final settings, pass to manager and set the containers
101   //-------------------------------------------------------
102   
103   mgr->AddTask(jetTask);
104   
105   // Create containers for input/output
106   AliAnalysisDataContainer *cinput1  = mgr->GetCommonInputContainer()  ;
107   TString contname(name);
108   contname+="_PWGJE";
109   AliAnalysisDataContainer *coutput1 = mgr->CreateContainer(contname.Data(), 
110                                                             TList::Class(),AliAnalysisManager::kOutputContainer,
111                                                             Form("%s", AliAnalysisManager::GetCommonFileName()));
112   mgr->ConnectInput  (jetTask, 0,  cinput1 );
113   mgr->ConnectOutput (jetTask, 1, coutput1 );
114
115   switch (runMode) {
116       case AliAnalysisTaskRhoVnModulation::kLocal : {
117           gStyle->SetOptFit(1);
118           AliAnalysisDataContainer *coutput2 = mgr->CreateContainer(Form("good_fits_%s", name.Data()), 
119                                                             TList::Class(),AliAnalysisManager::kOutputContainer,
120                                                             Form("%s", AliAnalysisManager::GetCommonFileName()));
121           AliAnalysisDataContainer *coutput3 = mgr->CreateContainer(Form("bad_fits_%s", name.Data()),
122                                                             TList::Class(),AliAnalysisManager::kOutputContainer,
123                                                              Form("%s", AliAnalysisManager::GetCommonFileName()));
124           mgr->ConnectOutput (jetTask, 2, coutput2);
125           mgr->ConnectOutput (jetTask, 3, coutput3);
126       } break;
127       default: break;
128   }
129   return jetTask;
130 }