]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGJE/EMCALJetTasks/macros/AddTaskJetResponseMaker.C
merging trunk to TPCdev
[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 )
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("AddTaskJetResponseMaker", "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("AddTaskJetResponseMaker", "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(Form("%s_%s_%s_Bias%d_BiasType%d_%s",taskname,njets1,njets2,(Int_t)floor(jetBias),biasType,cutType));
52
53   if (minCent != -999 && maxCent != -999) 
54     name += Form("_Cent%d_%d", (Int_t)floor(minCent), (Int_t)floor(maxCent));
55
56   if (ptHardBin != -999) 
57     name += Form("_PtHard%d", ptHardBin);
58
59   AliJetResponseMaker* jetTask = address;
60   if (jetTask)
61     new (jetTask) AliJetResponseMaker(name);
62   else
63     jetTask = new AliJetResponseMaker(name);
64
65   AliParticleContainer *trackCont1 = jetTask->AddParticleContainer(ntracks1);
66   AliClusterContainer *clusCont1 = jetTask->AddClusterContainer(nclusters1);
67   AliJetContainer *jetCont1 = jetTask->AddJetContainer(njets1, cutType, jetradius1);
68   jetCont1->SetRhoName(nrho1);
69   jetCont1->SetLeadingHadronType(biasType);
70   jetCont1->SetPtBiasJetTrack(jetBias);
71   jetCont1->SetPtBiasJetClus(jetBias);
72   jetCont1->SetJetPtCut(jetptcut);
73   jetCont1->SetPercAreaCut(jetareacut);
74   jetCont1->SetIsParticleLevel(kFALSE);
75   jetCont1->ConnectParticleContainer(trackCont1);
76   jetCont1->ConnectClusterContainer(clusCont1);
77
78   AliParticleContainer *trackCont2 = jetTask->AddParticleContainer(ntracks2);
79   AliClusterContainer *clusCont2 = jetTask->AddClusterContainer(nclusters2);
80   AliJetContainer *jetCont2 = jetTask->AddJetContainer(njets2, cutType, jetradius2);
81   jetCont2->SetRhoName(nrho2);
82   jetCont2->SetLeadingHadronType(biasType);
83   jetCont2->SetPtBiasJetTrack(jetBias);
84   jetCont2->SetPtBiasJetClus(jetBias);
85   jetCont2->SetJetPtCut(jetptcut);
86   jetCont2->SetPercAreaCut(jetareacut);
87   jetCont2->SetIsParticleLevel(kTRUE);
88   jetCont2->ConnectParticleContainer(trackCont2);
89   jetCont2->ConnectClusterContainer(clusCont2);
90
91   jetTask->SetMatching(matching, maxDistance1, maxDistance2);
92   jetTask->SetVzRange(-10,10);
93   jetTask->SetIsPythia(kTRUE);
94   jetTask->SetPtHardBin(ptHardBin);
95   jetTask->SetCentRange(minCent,maxCent);
96
97   if (biggerMatrix) 
98     jetTask->SetHistoBins(1000,0,500);
99   
100   //-------------------------------------------------------
101   // Final settings, pass to manager and set the containers
102   //-------------------------------------------------------
103   
104   mgr->AddTask(jetTask);
105   
106   // Create containers for input/output
107   AliAnalysisDataContainer *cinput1  = mgr->GetCommonInputContainer()  ;
108   TString contname(name);
109   contname += "_histos";
110   AliAnalysisDataContainer *coutput1 = mgr->CreateContainer(contname.Data(), 
111                                                             TList::Class(),AliAnalysisManager::kOutputContainer,
112                                                             Form("%s", AliAnalysisManager::GetCommonFileName()));
113   mgr->ConnectInput  (jetTask, 0,  cinput1 );
114   mgr->ConnectOutput (jetTask, 1, coutput1 );
115   
116   return jetTask;
117 }