]>
Commit | Line | Data |
---|---|---|
3773435b | 1 | Double_t fitf(Double_t *x, Double_t *par) { |
2 | //5 parameters, 0: transition from f0 to f2, 1: pol0, 2-4: pol2 | |
3 | Double_t trans = par[0]; | |
4 | ||
5 | TF1 *f0 = new TF1("f0","pol0",0,trans); | |
6 | TF1 *f2 = new TF1("f2","pol2",trans,100); | |
7 | ||
8 | Double_t fitval = 0.; | |
9 | if(x[0]<par[0]) | |
10 | fitval = par[1]; | |
11 | else | |
12 | fitval = par[2]+x[0]*par[3]+x[0]*x[0]*par[4]; | |
13 | ||
14 | return fitval; | |
15 | ||
16 | } | |
17 | ||
18 | AliAnalysisTaskEmcalDiJetAna* AddTaskEmcalDiJetAna(TString kTracksName = "PicoTracks", | |
19 | TString kClusName = "caloClusterCorr", | |
20 | Double_t R = 0.4, | |
21 | Double_t ptminTrack = 0.15, | |
22 | Double_t etminClus = 0.3, | |
23 | Int_t rhoType = 0, | |
24 | TString trigClass = "", | |
25 | const char *CentEst = "V0A", | |
26 | Int_t pSel = AliVEvent::kINT7, | |
bb84b374 | 27 | Int_t matchFullCh = AliAnalysisTaskEmcalDiJetBase::kNoMatching, |
4bd08270 | 28 | Double_t ptTrackBias = 0., |
e50460de | 29 | Int_t corrType = AliAnalysisTaskEmcalDiJetBase::kCorrelateTwo, |
30 | Float_t nefCut = 0.95 | |
3773435b | 31 | ) { |
32 | ||
33 | enum AlgoType {kKT, kANTIKT}; | |
34 | enum JetType {kFULLJETS, kCHARGEDJETS, kNEUTRALJETS}; | |
35 | ||
36 | // #### Define manager and data container names | |
37 | AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager(); | |
38 | if (!mgr) { | |
39 | ::Error("AddTaskEmcalDiJet", "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("AddTaskEmcalDiJet", "This task requires an input event handler"); | |
48 | return NULL; | |
49 | } | |
50 | ||
51 | // #### Add necessary jet finder tasks | |
52 | gROOT->LoadMacro("$ALICE_ROOT/PWGJE/EMCALJetTasks/macros/AddTaskEmcalJet.C"); | |
53 | ||
54 | AliEmcalJetTask* jetFinderTaskFull = AddTaskEmcalJet(kTracksName, kClusName, kANTIKT, R, kFULLJETS, ptminTrack, etminClus); | |
55 | AliEmcalJetTask* jetFinderTaskCharged = AddTaskEmcalJet(kTracksName, kClusName, kANTIKT, R, kCHARGEDJETS, ptminTrack, etminClus); | |
56 | ||
57 | TString strJetsFull = jetFinderTaskFull->GetName(); | |
58 | TString strJetsCh = jetFinderTaskCharged->GetName(); | |
59 | ||
60 | // Add kt jet finder and rho task in case we want background subtraction | |
61 | gROOT->LoadMacro("$ALICE_ROOT/PWGJE/EMCALJetTasks/macros/AddTaskRhoSparse.C"); | |
62 | AliEmcalJetTask *jetFinderKt; | |
63 | AliEmcalJetTask *jetFinderAKt; | |
64 | AliAnalysisTaskRhoSparse *rhoTask; | |
65 | if(rhoType==1) { | |
66 | jetFinderKt = AddTaskEmcalJet(kTracksName, kClusName, kKT, R, kCHARGEDJETS, ptminTrack, etminClus); | |
67 | jetFinderKt->SetMinJetPt(0.); | |
68 | jetFinderAKt = AddTaskEmcalJet(kTracksName, kClusName, kANTIKT, R, kCHARGEDJETS, ptminTrack, etminClus); | |
69 | ||
70 | TF1 *fScale = new TF1("fScale","1.42",0.,100.); | |
71 | /* | |
72 | TF1 *fScale = new TF1("fit",fitf,0,100,5); | |
73 | fScale->SetParameters(60.,1.41363e+00,7.95329e-01,1.95281e-02,-1.55196e-04); | |
74 | */ | |
9e5eee5d | 75 | TString rhoSparseName = Form("RhoSparseR%03d",(int)(100*R)); |
76 | rhoTask = AddTaskRhoSparse(jetFinderKt->GetName(), | |
3773435b | 77 | jetFinderAKt->GetName(), |
9e5eee5d | 78 | kTracksName.Data(), |
79 | kClusName.Data(), | |
80 | rhoSparseName.Data(), | |
3773435b | 81 | R, |
9e5eee5d | 82 | "TPC", |
3773435b | 83 | 0.01, |
84 | 0.15, | |
85 | 0, | |
86 | fScale, | |
87 | 0, | |
88 | kTRUE, | |
9e5eee5d | 89 | rhoSparseName.Data(), |
3773435b | 90 | kTRUE |
91 | ); | |
92 | rhoTask->SetCentralityEstimator(CentEst); | |
93 | ||
94 | } | |
bb84b374 | 95 | TString wagonName = Form("DiJet_%s_%s_Rho%dTC%sMatch%dHadTrig%d",strJetsFull.Data(),strJetsCh.Data(),rhoType,trigClass.Data(),matchFullCh,(Int_t)(ptTrackBias)); |
3773435b | 96 | |
97 | //Configure DiJet task | |
98 | AliAnalysisTaskEmcalDiJetAna *taskDiJet = NULL; | |
99 | taskDiJet = new AliAnalysisTaskEmcalDiJetAna(wagonName.Data()); | |
100 | ||
4bd08270 | 101 | taskDiJet->SetTriggerClass(trigClass.Data()); |
102 | if(ptminTrack==0.) { | |
103 | taskDiJet->SetIsPythiaPtHard(kTRUE); | |
104 | taskDiJet->SetDoFullFull(kTRUE); | |
105 | } | |
c66364a6 | 106 | taskDiJet->SetJetCorrelationType(corrType); |
4bd08270 | 107 | |
108 | ||
3773435b | 109 | Printf("strJetsFull: %s",strJetsFull.Data()); |
110 | Printf("strJetsCh: %s",strJetsCh.Data()); | |
111 | ||
112 | taskDiJet->AddParticleContainer(kTracksName.Data()); | |
113 | taskDiJet->AddClusterContainer(kClusName.Data()); | |
114 | ||
eca9052c | 115 | //taskDiJet->SetAnaType(AliAnalysisTaskEmcalDev::kEMCAL); |
3773435b | 116 | |
117 | taskDiJet->SetContainerFull(0); | |
118 | taskDiJet->SetContainerCharged(1); | |
119 | taskDiJet->AddJetContainer(strJetsFull.Data(),"EMCAL",R); | |
120 | taskDiJet->AddJetContainer(strJetsCh.Data(),"TPC",R); | |
121 | ||
9e5eee5d | 122 | taskDiJet->SetZLeadingCut(0.98,0.98,0); |
e50460de | 123 | taskDiJet->SetNEFCut(0.,nefCut,0); |
9e5eee5d | 124 | |
3773435b | 125 | for(Int_t i=0; i<2; i++) { |
eca9052c | 126 | taskDiJet->SetPercAreaCut(0.6, i); |
bb84b374 | 127 | taskDiJet->SetPtBiasJetTrack(ptTrackBias,i); |
3773435b | 128 | } |
129 | ||
130 | taskDiJet->SetRhoType(rhoType); | |
131 | if(rhoType==1) { | |
9e5eee5d | 132 | taskDiJet->SetRhoName(rhoTask->GetOutRhoScaledName(),0); |
133 | taskDiJet->SetRhoName(rhoTask->GetOutRhoName(),1); | |
3773435b | 134 | } |
135 | ||
136 | taskDiJet->SetCentralityEstimator(CentEst); | |
137 | ||
138 | taskDiJet->SelectCollisionCandidates(pSel); | |
139 | ||
140 | taskDiJet->SetFullChargedMatchingType(matchFullCh); | |
141 | ||
142 | taskDiJet->SetDoChargedCharged(kTRUE); | |
143 | taskDiJet->SetDoFullCharged(kTRUE); | |
144 | taskDiJet->SetMatchFullCharged(kTRUE); | |
145 | ||
146 | ||
147 | mgr->AddTask(taskDiJet); | |
148 | ||
149 | //Connnect input | |
150 | mgr->ConnectInput (taskDiJet, 0, mgr->GetCommonInputContainer() ); | |
151 | ||
152 | //Connect output | |
153 | AliAnalysisDataContainer *coutput1 = 0x0; | |
154 | ||
6ab30d5f | 155 | TString contName(wagonName); |
156 | contName += "_histos"; | |
3773435b | 157 | |
6ab30d5f | 158 | // TString outputfile = Form("%s:%s",AliAnalysisManager::GetCommonFileName(),wagonName.Data()); |
159 | TString outputfile = Form("%s",AliAnalysisManager::GetCommonFileName()); | |
3773435b | 160 | |
6ab30d5f | 161 | coutput1 = mgr->CreateContainer(contName.Data(), TList::Class(),AliAnalysisManager::kOutputContainer,outputfile); |
3773435b | 162 | |
163 | mgr->ConnectOutput(taskDiJet,1,coutput1); | |
164 | ||
165 | return taskDiJet; | |
166 | } |