]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGJE/EMCALJetTasks/macros/AddTaskJetResponseMaker.C
Merge branch 'master' of https://git.cern.ch/reps/AliRoot
[u/mrichter/AliRoot.git] / PWGJE / EMCALJetTasks / macros / AddTaskJetResponseMaker.C
1 // $Id$
2
3 AliJetResponseMaker* AddTaskJetResponseMaker(
4   const char *ntracks1           = "Tracks",
5   const char *nclusters1         = "CaloClusters",
6   const char *njets1             = "Jets",
7   const char *nrho1              = "Rho",
8   Double_t    jetradius1         = 0.2,
9   const char *ntracks2           = "MCParticles",
10   const char *nclusters2         = "",
11   const char *njets2             = "MCJets",
12   const char *nrho2              = "",
13   Double_t    jetradius2         = 0.2,
14   Double_t    jetptcut           = 1,
15   Double_t    jetareacut         = 0.557,
16   Double_t    jetBias            = 5,
17   Int_t       biasType           = 0,   //  0 = charged, 1 = neutral, 2 = both
18   UInt_t      matching           = AliJetResponseMaker::kGeometrical,
19   Double_t    maxDistance1       = 0.25,
20   Double_t    maxDistance2       = 0.25,
21   const char *cutType            = "TPC",
22   Int_t       ptHardBin          = -999,
23   Double_t    minCent            = -999,
24   Double_t    maxCent            = -999,
25   const char *taskname           = "AliJetResponseMaker",
26   Bool_t      biggerMatrix       = kFALSE,
27   AliJetResponseMaker* address   = 0,
28   Double_t    nefmincut          = -10,
29   Double_t    nefmaxcut          = 10,
30   Int_t       jetTagging         = 0,
31   Double_t    maxTrackPt         = 100
32 )
33 {  
34   // Get the pointer to the existing analysis manager via the static access method.
35   //==============================================================================
36   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
37   if (!mgr)
38   {
39     ::Error("AddTaskJetResponseMaker", "No analysis manager to connect to.");
40     return NULL;
41   }  
42   
43   // Check the analysis type using the event handlers connected to the analysis manager.
44   //==============================================================================
45   if (!mgr->GetInputEventHandler())
46   {
47     ::Error("AddTaskJetResponseMaker", "This task requires an input event handler");
48     return NULL;
49   }
50   
51   //-------------------------------------------------------
52   // Init the task and do settings
53   //-------------------------------------------------------
54
55   TString name(Form("%s_%s_%s_Bias%d_BiasType%d_%s",taskname,njets1,njets2,(Int_t)floor(jetBias),biasType,cutType));
56
57   if (minCent != -999 && maxCent != -999) 
58     name += Form("_Cent%d_%d", (Int_t)floor(minCent), (Int_t)floor(maxCent));
59
60   if (ptHardBin != -999) 
61     name += Form("_PtHard%d", ptHardBin);
62   if (nefmaxcut<1.0)
63     name += Form("_NEF%d", (Int_t)(100*nefmaxcut));
64     
65   AliJetResponseMaker* jetTask = address;
66   if (jetTask)
67     new (jetTask) AliJetResponseMaker(name);
68   else
69     jetTask = new AliJetResponseMaker(name);
70
71   AliParticleContainer *trackCont1 = jetTask->AddParticleContainer(ntracks1);
72   AliClusterContainer *clusCont1 = jetTask->AddClusterContainer(nclusters1);
73   AliJetContainer *jetCont1 = jetTask->AddJetContainer(njets1, cutType, jetradius1);
74   jetCont1->SetRhoName(nrho1);
75   jetCont1->SetLeadingHadronType(biasType);
76   jetCont1->SetPtBiasJetTrack(jetBias);
77   jetCont1->SetPtBiasJetClus(jetBias);
78   jetCont1->SetJetPtCut(jetptcut);
79   jetCont1->SetPercAreaCut(jetareacut);
80   jetCont1->SetIsParticleLevel(kFALSE);
81   jetCont1->ConnectParticleContainer(trackCont1);
82   jetCont1->ConnectClusterContainer(clusCont1);
83   jetCont1->SetNEFCut(nefmincut,nefmaxcut);
84   jetCont1->SetFlavourCut(jetTagging);
85   jetCont1->SetMaxTrackPt(maxTrackPt);
86
87     
88   AliParticleContainer *trackCont2 = jetTask->AddParticleContainer(ntracks2);
89   trackCont2->SelectPhysicalPrimaries(kTRUE);
90   trackCont2->SetParticlePtCut(0);
91   AliClusterContainer *clusCont2 = jetTask->AddClusterContainer(nclusters2);
92   AliJetContainer *jetCont2 = jetTask->AddJetContainer(njets2, cutType, jetradius2);
93   jetCont2->SetRhoName(nrho2);
94   jetCont2->SetLeadingHadronType(biasType);
95   jetCont2->SetPtBiasJetTrack(jetBias);
96   jetCont2->SetPtBiasJetClus(jetBias);
97   jetCont2->SetJetPtCut(jetptcut);
98   jetCont2->SetPercAreaCut(jetareacut);
99   jetCont2->SetIsParticleLevel(kTRUE);
100   jetCont2->ConnectParticleContainer(trackCont2);
101   jetCont2->ConnectClusterContainer(clusCont2);
102   jetCont2->SetFlavourCut(jetTagging);
103   jetCont2->SetMaxTrackPt(1000); // disable default 100 GeV/c track cut for particle level jets
104
105     
106   jetTask->SetMatching(matching, maxDistance1, maxDistance2);
107   jetTask->SetVzRange(-10,10);
108   jetTask->SetIsPythia(kTRUE);
109   jetTask->SetPtHardBin(ptHardBin);
110   jetTask->SetCentRange(minCent,maxCent);
111
112   if (biggerMatrix) 
113     jetTask->SetHistoBins(1000,0,500);
114   
115   //-------------------------------------------------------
116   // Final settings, pass to manager and set the containers
117   //-------------------------------------------------------
118   
119   mgr->AddTask(jetTask);
120   
121   // Create containers for input/output
122   AliAnalysisDataContainer *cinput1  = mgr->GetCommonInputContainer()  ;
123   TString contname(name);
124   contname += "_histos";
125   AliAnalysisDataContainer *coutput1 = mgr->CreateContainer(contname.Data(), 
126                                                             TList::Class(),AliAnalysisManager::kOutputContainer,
127                                                             Form("%s", AliAnalysisManager::GetCommonFileName()));
128   mgr->ConnectInput  (jetTask, 0,  cinput1 );
129   mgr->ConnectOutput (jetTask, 1, coutput1 );
130   
131   return jetTask;
132 }