]>
Commit | Line | Data |
---|---|---|
1 | AliAnalysisTaskEmcalDiJetResponse* AddTaskEmcalDiJetResponse(TString kTracksName = "PicoTracks", | |
2 | TString kClusName = "caloClusterCorr", | |
3 | TString kMCTracksName = "MCParticles", | |
4 | Double_t R = 0.4, | |
5 | Double_t ptminTrack = 0.15, | |
6 | Double_t etminClus = 0.3, | |
7 | Int_t rhoType = 0, | |
8 | TString trigClass = "", | |
9 | const char *CentEst = "V0A", | |
10 | Int_t pSel = AliVEvent::kINT7, | |
11 | Int_t matchFullCh = AliAnalysisTaskEmcalDiJetBase::kNoMatching, | |
12 | Double_t ptTrackBias = 0., | |
13 | Int_t responseVar = 0, | |
14 | Int_t corrType = AliAnalysisTaskEmcalDiJetBase::kCorrelateTwo, | |
15 | Float_t nefCut = 0.95 | |
16 | ) { | |
17 | ||
18 | enum AlgoType {kKT, kANTIKT}; | |
19 | enum JetType {kFULLJETS, kCHARGEDJETS, kNEUTRALJETS}; | |
20 | ||
21 | // #### Define manager and data container names | |
22 | AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager(); | |
23 | if (!mgr) { | |
24 | ::Error("AddTaskEmcalDiJet", "No analysis manager to connect to."); | |
25 | return NULL; | |
26 | } | |
27 | ||
28 | // Check the analysis type using the event handlers connected to the analysis manager. | |
29 | //============================================================================== | |
30 | if (!mgr->GetInputEventHandler()) | |
31 | { | |
32 | ::Error("AddTaskEmcalDiJet", "This task requires an input event handler"); | |
33 | return NULL; | |
34 | } | |
35 | ||
36 | // #### Add necessary jet finder tasks | |
37 | gROOT->LoadMacro("$ALICE_ROOT/PWGJE/EMCALJetTasks/macros/AddTaskEmcalJet.C"); | |
38 | ||
39 | AliEmcalJetTask* jetFinderTaskFull = AddTaskEmcalJet(kTracksName, kClusName, kANTIKT, R, kFULLJETS, ptminTrack, etminClus); | |
40 | AliEmcalJetTask* jetFinderTaskCharged = AddTaskEmcalJet(kTracksName, kClusName, kANTIKT, R, kCHARGEDJETS, ptminTrack, etminClus); | |
41 | ||
42 | AliEmcalJetTask* jetFinderTaskFullMC = AddTaskEmcalJet(kMCTracksName ,"", kANTIKT, R, kFULLJETS, kPartLevPtCut, kPartLevPtCut); | |
43 | AliEmcalJetTask* jetFinderTaskChargedMC = AddTaskEmcalJet(kMCTracksName ,"", kANTIKT, R, kCHARGEDJETS, kPartLevPtCut, kPartLevPtCut); | |
44 | ||
45 | ||
46 | TString strJetsFull = jetFinderTaskFull->GetName(); | |
47 | TString strJetsCh = jetFinderTaskCharged->GetName(); | |
48 | ||
49 | TString strJetsFullMC = jetFinderTaskFullMC->GetName(); | |
50 | TString strJetsChMC = jetFinderTaskChargedMC->GetName(); | |
51 | ||
52 | ||
53 | TString wagonName = Form("DiJetResponse_%s_%s_Rho%dTC%sMatch%dHadTrig%dRV%d",strJetsFull.Data(),strJetsFullMC.Data(),rhoType,trigClass.Data(),matchFullCh,(Int_t)(ptTrackBias),responseVar); | |
54 | ||
55 | //Configure DiJet task | |
56 | AliAnalysisTaskEmcalDiJetResponse *taskDiJet = new AliAnalysisTaskEmcalDiJetResponse(wagonName.Data()); | |
57 | ||
58 | Printf("strJetsFull: %s",strJetsFull.Data()); | |
59 | Printf("strJetsCh: %s",strJetsCh.Data()); | |
60 | ||
61 | taskDiJet->SetUseAliAnaUtils(kTRUE); | |
62 | taskDiJet->SetIsPythia(kTRUE); | |
63 | ||
64 | taskDiJet->SetJetCorrelationType(corrType); | |
65 | ||
66 | taskDiJet->SetContainerFull(0); | |
67 | taskDiJet->SetContainerCharged(1); | |
68 | taskDiJet->SetContainerFullMC(2); | |
69 | taskDiJet->SetContainerChargedMC(3); | |
70 | ||
71 | taskDiJet->AddParticleContainer(kTracksName.Data()); | |
72 | taskDiJet->AddClusterContainer(kClusName.Data()); | |
73 | ||
74 | taskDiJet->AddJetContainer(strJetsFull.Data(),"EMCAL",R); | |
75 | taskDiJet->AddJetContainer(strJetsCh.Data(),"TPC",R); | |
76 | taskDiJet->AddJetContainer(strJetsFullMC.Data(),"EMCAL",R); | |
77 | taskDiJet->AddJetContainer(strJetsChMC.Data(),"TPC",R); | |
78 | ||
79 | taskDiJet->SetZLeadingCut(0.98,0.98,0); | |
80 | taskDiJet->SetZLeadingCut(0.98,0.98,2); | |
81 | ||
82 | taskDiJet->SetNEFCut(0.,nefCut,0); | |
83 | taskDiJet->SetNEFCut(0.,nefCut,2); | |
84 | ||
85 | for(Int_t i=0; i<4; i++) { | |
86 | taskDiJet->SetPercAreaCut(0.6, i); | |
87 | taskDiJet->SetPtBiasJetTrack(ptTrackBias,i); | |
88 | } | |
89 | ||
90 | taskDiJet->SetRhoType(rhoType); | |
91 | ||
92 | taskDiJet->SetCentralityEstimator(CentEst); | |
93 | ||
94 | taskDiJet->SelectCollisionCandidates(pSel); | |
95 | ||
96 | taskDiJet->SetFullChargedMatchingType(matchFullCh); | |
97 | ||
98 | taskDiJet->SetDoChargedCharged(kTRUE); | |
99 | taskDiJet->SetDoFullCharged(kTRUE); | |
100 | taskDiJet->SetMatchFullCharged(kTRUE); | |
101 | ||
102 | taskDiJet->SetResponseVar(responseVar); | |
103 | ||
104 | taskDiJet->SetPtMinTriggerJet(0.); | |
105 | ||
106 | mgr->AddTask(taskDiJet); | |
107 | ||
108 | //Connnect input | |
109 | mgr->ConnectInput (taskDiJet, 0, mgr->GetCommonInputContainer() ); | |
110 | ||
111 | //Connect output | |
112 | AliAnalysisDataContainer *coutput1 = 0x0; | |
113 | ||
114 | TString contName(wagonName); | |
115 | contName += "_histos"; | |
116 | ||
117 | // TString outputfile = Form("%s:%s",AliAnalysisManager::GetCommonFileName(),wagonName.Data()); | |
118 | TString outputfile = Form("%s",AliAnalysisManager::GetCommonFileName()); | |
119 | ||
120 | coutput1 = mgr->CreateContainer(contName.Data(), TList::Class(),AliAnalysisManager::kOutputContainer,outputfile); | |
121 | ||
122 | mgr->ConnectOutput(taskDiJet,1,coutput1); | |
123 | ||
124 | return taskDiJet; | |
125 | } |