]>
Commit | Line | Data |
---|---|---|
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 | } |