2 * AddTask macro for class
3 * Redmer Alexander Bertens, rbertens@cern.ch
4 * Utrecht University, Utrecht, Netherlands
6 * Note: this macro is pretty much a copy of AddTaskEmcalJetSample.C
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
30 // Get the pointer to the existing analysis manager via the static access method.
31 //==============================================================================
32 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
35 ::Error("AddTaskEmcalJetSample", "No analysis manager to connect to.");
39 // Check the analysis type using the event handlers connected to the analysis manager.
40 //==============================================================================
41 if (!mgr->GetInputEventHandler())
43 ::Error("AddTaskEmcalJetSample", "This task requires an input event handler");
47 //-------------------------------------------------------
48 // Init the task and do settings
49 //-------------------------------------------------------
51 TString name(taskname);
52 if (strcmp(njets,"")) {
56 if (strcmp(nrho,"")) {
60 if (!strcmp(type, "TPC"))
62 else if (!strcmp(type, "EMCAL"))
64 else if (!strcmp(type, "USER"))
67 AliAnalysisTaskRhoVnModulation* jetTask = new AliAnalysisTaskRhoVnModulation(name, runMode);
69 AliParticleContainer* partCont = jetTask->AddParticleContainer(ntracks);
71 partCont->SetName("Tracks");
72 partCont->SetParticlePtCut(trackptcut);
74 AliJetContainer* jetCont = jetTask->AddJetContainer(njets, type, jetradius);
76 jetCont->SetName("Jets");
77 jetCont->SetPercAreaCut(jetareacut);
78 jetCont->SetRhoName(nrho);
79 jetCont->ConnectParticleContainer(partCont);
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
90 Int_t c[] = {0, 10, 30, 50, 70, 90};
91 jetTask->SetCentralityClasses(new TArrayI(sizeof(c)/sizeof(c[0]), c));
93 // if a randomized hasn't specified use a safe default
94 if(!randomizer) jetTask->SetRandomSeed(new TRandom3(0));
99 //-------------------------------------------------------
100 // Final settings, pass to manager and set the containers
101 //-------------------------------------------------------
103 mgr->AddTask(jetTask);
105 // Create containers for input/output
106 AliAnalysisDataContainer *cinput1 = mgr->GetCommonInputContainer() ;
107 TString contname(name);
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 );
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);