]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGJE/EMCALJetTasks/macros/AddTaskJetResponseMaker.C
from marta
[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    jetBiasTrack       = 5,
17   Double_t    jetBiasClus        = 1000,
18   UInt_t      matching           = AliJetResponseMaker::kGeometrical,
19   Double_t    maxDistance1       = 0.25,
20   Double_t    maxDistance2       = 0.25,
21   UInt_t      type               = AliAnalysisTaskEmcal::kTPC,
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_Track%d_Clus%d_",taskname,njets1,njets2,(Int_t)floor(jetBiasTrack),(Int_t)floor(jetBiasClus)));
52
53   if (type == AliAnalysisTaskEmcal::kTPC)
54     name += "TPC";
55   else if (type == AliAnalysisTaskEmcal::kEMCAL) 
56     name += "EMCAL";
57   else if (type == AliAnalysisTaskEmcal::kUser) 
58     name += "USER";
59
60   if (minCent != -999 && maxCent != -999) 
61     name += Form("_Cent%d_%d", (Int_t)floor(minCent), (Int_t)floor(maxCent));
62
63   if (ptHardBin != -999) 
64     name += Form("_PtHard%d", ptHardBin);
65
66   AliJetResponseMaker* jetTask = address;
67   if (jetTask)
68     new (jetTask) AliJetResponseMaker(name);
69   else
70     jetTask = new AliJetResponseMaker(name);
71
72   jetTask->SetAnaType(type);
73   jetTask->SetTracksName(ntracks1);
74   jetTask->SetClusName(nclusters1);
75   jetTask->SetJetsName(njets1);
76   jetTask->SetRhoName(nrho1);
77   jetTask->SetJetRadius(jetradius1);
78   jetTask->SetTracks2Name(ntracks2);
79   jetTask->SetClus2Name(nclusters2);
80   jetTask->SetJets2Name(njets2);
81   jetTask->SetRho2Name(nrho2);
82   jetTask->SetJet2Radius(jetradius2);
83   jetTask->SetJetPtCut(jetptcut);
84   jetTask->SetPercAreaCut(jetareacut);
85   jetTask->SetPtBiasJetTrack(jetBiasTrack);
86   jetTask->SetPtBiasJetClus(jetBiasClus);
87   jetTask->SetMatching(matching, maxDistance1, maxDistance2);
88   jetTask->SetVzRange(-10,10);
89   jetTask->SetPtHardBin(ptHardBin);
90   jetTask->SetCentRange(minCent,maxCent);
91
92   if (biggerMatrix) 
93     jetTask->SetHistoBins(1000,0,500);
94   
95   //-------------------------------------------------------
96   // Final settings, pass to manager and set the containers
97   //-------------------------------------------------------
98   
99   mgr->AddTask(jetTask);
100   
101   // Create containers for input/output
102   AliAnalysisDataContainer *cinput1  = mgr->GetCommonInputContainer()  ;
103   TString contname(name);
104   contname += "_histos";
105   AliAnalysisDataContainer *coutput1 = mgr->CreateContainer(contname.Data(), 
106                                                             TList::Class(),AliAnalysisManager::kOutputContainer,
107                                                             Form("%s", AliAnalysisManager::GetCommonFileName()));
108   mgr->ConnectInput  (jetTask, 0,  cinput1 );
109   mgr->ConnectOutput (jetTask, 1, coutput1 );
110   
111   return jetTask;
112 }