1 AliAnalysisTaskJetHBOM *AddTaskJetHBOM(char* bRec = "AOD",char* bGen = "",UInt_t filterMask = 272, UInt_t iPhysicsSelectionFlag = AliVEvent::kAny,Char_t *jf = "KT", Float_t radius = 0.4,Int_t kWriteAOD = kFALSE,char* deltaFile = "",Float_t ptTrackCut = 0.15, Float_t etaTrackWindow = 0.9,Float_t vertexWindow = 10.,TString effLoc = "$ALICE_ROOT/OADB/PWGJE/HBOM/fastMCInput_LHC10h_110719a.root",Int_t fNHBOM = 0, Int_t constCone = kFALSE, Float_t constConePhi = 0, Float_t constConeEta = 0);
3 Int_t kBackgroundModeCl = 0;
4 Float_t kPtTrackCutCl = 0.15;
5 Float_t kTrackEtaWindowCl = 0.8;
6 Float_t kVertexWindowCl = 10;
9 AliAnalysisTaskJetHBOM *AddTaskJetHBOM(char* bRec,char* bGen ,UInt_t filterMask,UInt_t iPhysicsSelectionFlag,Char_t *jf,Float_t radius,Int_t kWriteAOD,char *deltaFile,Float_t ptTrackCut,Float_t etaTrackWindow,Float_t vertexWindow,TString effLoc,Int_t fNHBOM, Int_t constCone, Float_t constConePhi,Float_t constConeEta)
11 //if constCone is true, the random Cone positon is set to constConePhi and constConeEta. Else the cone is random set and the parameters constConePhi and constConeEta are irrelevant
13 // Creates a jet fider task, configures it and adds it to the analysis manager.
14 kPtTrackCutCl = ptTrackCut;
15 kTrackEtaWindowCl = etaTrackWindow;
16 kVertexWindowCl = vertexWindow;
18 TString outputFile(deltaFile);
19 // Get the pointer to the existing analysis manager via the static access method.
20 //==============================================================================
21 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
23 ::Error("AddTaskJetHBOM", "No analysis manager to connect to.");
27 // Check the analysis type using the event handlers connected to the analysis manager.
28 //==============================================================================
29 if (!mgr->GetInputEventHandler()) {
30 ::Error("AddTaskJetHBOM", "This task requires an input event handler");
34 TString type = mgr->GetInputEventHandler()->GetDataType();
35 TString typeRec(bRec);
36 TString typeGen(bGen);
37 if(!typeRec.Contains("AODextra")) {
41 cout << "typeRec: " << typeRec << endl;
42 // Create the task and configure it.
43 //===========================================================================
47 cAdd += Form("%02d_",(int)((radius+0.01)*10.));
48 cAdd += Form("B%d",(int)kBackgroundModeCl);
49 cAdd += Form("_Filter%05d",filterMask);
50 cAdd += Form("_Cut%05d",(int)(1000.*kPtTrackCutCl));
51 cAdd += Form("_hbom%02d",fNHBOM);
53 cAdd += Form("_constConePhi%02dEta%02d",constConePhi,constConeEta);
55 Printf("%s %E",cAdd.Data(),kPtTrackCutCl);
56 AliAnalysisTaskJetHBOM* hbom = new AliAnalysisTaskJetHBOM(Form("JetHBOM%s_%s%s",bRec,jf,cAdd.Data()));
58 hbom->SetFilterMask(filterMask);
59 // hbom->SetUseGlobalSelection(kTRUE);
60 hbom->SetVtxCuts(kVertexWindowCl,1);//sets fVtxZCut and fVtxR2Cut
62 // Assume all jet are produced already
63 hbom->SetAODTrackInput(kTRUE);
64 hbom->SetAODMCInput(kTRUE);
67 if(typeRec.Contains("AODMC2b")){// work down from the top AODMC2b -> AODMC2 -> AODMC -> AOD
68 hbom->SetTrackTypeRec(AliAnalysisTaskJetHBOM::kTrackAODMCChargedAcceptance);
69 hbom->SetTrackPtCut(kPtTrackCutCl);
70 hbom->SetTrackEtaWindow(kTrackEtaWindowCl);
72 else if (typeRec.Contains("AODMC2")){
73 hbom->SetTrackTypeRec(AliAnalysisTaskJetHBOM::kTrackAODMCCharged);
74 hbom->SetTrackPtCut(kPtTrackCutCl);
75 hbom->SetTrackEtaWindow(5);
77 else if (typeRec.Contains("AODMC")){
78 hbom->SetTrackTypeRec(AliAnalysisTaskJetHBOM::kTrackAODMCAll);
79 hbom->SetTrackPtCut(kPtTrackCutCl);
80 hbom->SetTrackEtaWindow(5);
82 else if (typeRec.Contains("AODextraonly")) {
83 hbom->SetTrackTypeRec(AliAnalysisTaskJetHBOM::kTrackAODextraonly);
84 hbom->SetTrackPtCut(kPtTrackCutCl);
85 hbom->SetTrackEtaWindow(kTrackEtaWindowCl);
87 else if (typeRec.Contains("AODextra")) {
88 cout << "AliAnalysisTaskJetHBOM::kTrackAODextra: " << AliAnalysisTaskJetHBOM::kTrackAODextra << endl;
89 hbom->SetTrackTypeRec(AliAnalysisTaskJetHBOM::kTrackAODextra);
90 hbom->SetTrackPtCut(kPtTrackCutCl);
91 hbom->SetTrackEtaWindow(kTrackEtaWindowCl);
93 else if (typeRec.Contains("AOD")) {
94 hbom->SetTrackTypeRec(AliAnalysisTaskJetHBOM::kTrackAOD);
95 hbom->SetTrackPtCut(kPtTrackCutCl);
96 hbom->SetTrackEtaWindow(kTrackEtaWindowCl);
99 hbom->SetRparam(radius);
100 hbom->SetGhostArea(0.005);
101 hbom->SetGhostEtamax(kTrackEtaWindowCl);
105 hbom->SetAlgorithm(2); // antikt from fastjet/JetDefinition.hh
108 hbom->SetAlgorithm(1); // CA from fastjet/JetDefinition.hh
111 hbom->SetAlgorithm(0); // kt from fastjet/JetDefinition.hh
114 ::Error("AddTaskJetHBOM", "Wrong jet finder selected\n");
118 //Constant Cone analysis
120 hbom->SetRandConePos(constConeEta,constConePhi);
125 if(outputFile.Length())hbom->SetJetOutputFile(outputFile);
126 hbom->SetJetOutputBranch(Form("hbom%s_%s%s",bRec,jf,cAdd.Data()));
127 hbom->SetJetOutputMinPt(0); // store only jets above a certain threshold
130 //sets number of detector hits
131 hbom->SetfNHBOM(fNHBOM);
134 if(iPhysicsSelectionFlag)hbom->SelectCollisionCandidates(iPhysicsSelectionFlag);
138 // Create ONLY the output containers for the data produced by the task.
139 // Get and connect other common input/output containers via the manager as below
140 //==============================================================================
141 AliAnalysisDataContainer *coutput1_Spec = mgr->CreateContainer(Form("hbom_%s_%s_%s%s",bRec,bGen,jf,cAdd.Data()), TList::Class(),AliAnalysisManager::kOutputContainer,Form("%s:PWGJE_hbom_%s_%s_%s%s",AliAnalysisManager::GetCommonFileName(),bRec,bGen,jf,cAdd.Data()));
143 mgr->ConnectInput (hbom, 0, mgr->GetCommonInputContainer());
144 mgr->ConnectOutput (hbom, 0, mgr->GetCommonOutputContainer());
145 mgr->ConnectOutput (hbom, 1, coutput1_Spec );
148 hbom->SetEfficiencyPt(GetEfficiencyPt(effLoc));
149 hbom->SetEfficiencyPhi(GetEfficiencyPhi(effLoc));
154 //loads single track pT efficiency from root file
155 TH1F *GetEfficiencyPt(TString effLoc){
159 if(!fIn)fIn = TFile::Open(effLoc.Data());
160 if(!fIn)Printf("%s%d no input data",(char*)__FILE__,__LINE__);
161 if(!hEffPt)hEffPt = (TH1F*)fIn->Get("hSingleTrackEffPt");
162 if(!hEffPt)Printf("%s%d no single track efficiency spectrum available",(char*)__FILE__,__LINE__);
165 TH1F *hEffPtClone = (TH1F*)hEffPt->Clone(hEffPt->GetName());
172 //loads phi-pT efficiency from root file
173 TH2D *GetEfficiencyPhi(TString effLoc){
177 if(!fIn)fIn = TFile::Open(effLoc.Data());
178 if(!fIn)Printf("%s%d no input data",(char*)__FILE__,__LINE__);
179 if(!hPhiPt)hPhiPt = (TH2D*)fIn->Get("h2TrackPtPhiNorm");
180 if(!hPhiPt) cout<<"Could not load h2TrackPtPhiNorm"<<endl;
181 if(!hPhiPt)Printf("%s%d no phi-pt efficiency spectrum available",(char*)__FILE__,__LINE__);
184 TH2D *hPhiPtClone = (TH2D*)hPhiPt->Clone(hPhiPt->GetName());