]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGJE/EMCALJetTasks/macros/AddTaskEmcalJetHadEPpid.C
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWGJE / EMCALJetTasks / macros / AddTaskEmcalJetHadEPpid.C
1 AliAnalysisTaskEmcalJetHadEPpid* AddTaskEmcalJetHadEPpid(
2    const char *outfilename    = "AnalysisOutput.root",
3    const char *nJets          = "Jets",
4    const char *nTracksME      = "PicoTracks",
5    const char *nClusters      = "CaloClustersCorr",
6    const char *nRho               = "rhoCh",
7    const char *lrho           = "lrho",
8    const Double_t minPhi      = 1.8,
9    const Double_t maxPhi      = 2.74,
10    const Double_t minEta      = -0.3,
11    const Double_t maxEta      = 0.3,
12    const Double_t minArea     = 0.4,
13    const Int_t EvtMix         = 0, 
14    const Double_t TrkBias     = 5,
15    const Double_t ClusBias    = 5,
16    const Double_t TrkEta      = 0.9,                                               
17    Bool_t       PID               = 0, //kFALSE,
18    Bool_t   PIDtrackBIAS      = 0, //kFALSE,
19    Bool_t   varbinTHnSparse   = 0, //kFALSE,
20    Bool_t   allpidAXIS            = 0, //kFALSE,
21    Bool_t   QAhistos              = 0, //kFALSE,
22    Bool_t   BIAShistos        = 0, //kFALSE,
23    Bool_t   extraCORRhistos   = 0, //kFALSE,
24    Bool_t   oldJEThadhistos   = 0, //kFALSE,
25    const Double_t JetPtcut    = 15.0,
26    const Double_t JetRadius   = 0.4,
27    const Double_t constitCut  = 0.15,
28    const Int_t MixingTracks   = 50000,
29    const Int_t nmixingTR      = 5000,
30    const Int_t nmixingEV      = 5,
31    TString cutType                        = "EMCAL",
32    Bool_t   Comments              = 0,
33    Bool_t   doFlavourJetAnalysis = 0,
34    const Int_t flavTag        = 999,
35    const Int_t esdcuts        = 10001006,
36    TString colltype                       = "",
37    UInt_t trigevent           = AliVEvent::kAny,
38    UInt_t mixevent            = AliVEvent::kAny,
39    UInt_t centbinsize         = 1,
40    const Int_t doEffcorrSW    = 0,
41    const char *tag                        = ""
42 )
43 {  
44   
45   // Get the pointer to the existing analysis manager via the static access method.
46   //==============================================================================
47   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
48   if (!mgr)
49   {
50     ::Error("AddTaskEmcalJetHadEPpid", "No analysis manager to connect to.");
51     return NULL;
52   }  
53
54   // Check the analysis type using the event handlers connected to the analysis manager.
55   //==============================================================================
56   AliVEventHandler *evhand = mgr->GetInputEventHandler();
57   //if (!mgr->GetInputEventHandler())
58   if (!evhand) {
59     Error("AddTaskEmcalJetHadEPpid", "This task requires an input event handler");
60     return NULL;
61   }
62
63   // check on type of event 
64   TString dType("ESD");
65   if (!evhand->InheritsFrom("AliESDInputHandler")) 
66     dType = "AOD";
67   if (dType == "AOD") const char *nTracks = "AODFilterTracks";
68   if (dType == "ESD") const char *nTracks = "ESDFilterTracks"; 
69
70   // find out collisions system in order to know beamtype in UserCreateObjects later on
71   AliAnalysisTaskEmcal::BeamType beam = -99;
72   if (colltype == "p-p") beam = 0;
73   else if(colltype == "A-A") beam = 1;
74   else if(colltype == "p-A") beam = 2;
75   else beam = -1;
76
77   //-------------------------------------------------------
78   // Init the task and do settings
79   //-------------------------------------------------------
80
81   TString name(Form("Correlations_%s%s", nJets, tag));
82   AliAnalysisTaskEmcalJetHadEPpid *correlationtask = new AliAnalysisTaskEmcalJetHadEPpid(name);
83   correlationtask->SetJetsName(nJets);
84   correlationtask->SetTracksName(nTracks);
85   correlationtask->SetTracksNameME(nTracksME);
86   correlationtask->SetRhoName(nRho);
87   if(colltype == "A-A") correlationtask->SetLocalRhoName(lrho);
88   correlationtask->SetJetPhi(minPhi,maxPhi);
89   correlationtask->SetJetEta(minEta,maxEta);
90   correlationtask->SetAreaCut(minArea);
91   correlationtask->SetEventMixing(EvtMix);
92   correlationtask->SetTrkBias(TrkBias);
93   correlationtask->SetClusBias(ClusBias);
94   correlationtask->SetTrkEta(TrkEta);
95   // Added on/after March20, 2014
96   correlationtask->SetdoPID(PID);
97   correlationtask->SetdoPIDtrackBIAS(PIDtrackBIAS);
98   correlationtask->SetvarbinTHnSparse(varbinTHnSparse);
99   correlationtask->SetallpidAXIS(allpidAXIS);
100   correlationtask->SetmakeQAhistos(QAhistos);
101   correlationtask->SetmakeBIAShistos(BIAShistos);  
102   correlationtask->SetmakeextraCORRhistos(extraCORRhistos);
103   correlationtask->SetoldJEThadhistos(oldJEThadhistos);
104   correlationtask->SetJetPtcut(JetPtcut);
105   correlationtask->SetJetRad(JetRadius);
106   correlationtask->SetConstituentCut(constitCut);
107   correlationtask->SetMixingTracks(MixingTracks);
108   correlationtask->SetNMixedTr(nmixingTR);
109   correlationtask->SetNMixedEvt(nmixingEV);
110   correlationtask->SetcutType(cutType);
111   correlationtask->SetdoComments(Comments);
112   correlationtask->SetFlavourJetAnalysis(doFlavourJetAnalysis);
113   correlationtask->SetJETFlavourTag(flavTag);
114   correlationtask->SetCollType(beam);
115   correlationtask->SetTriggerEventType(trigevent);
116   correlationtask->SetMixedEventType(mixevent);
117   correlationtask->SetCentBinSize(centbinsize);
118   correlationtask->SetDoEffCorr(doEffcorrSW);
119
120   // =================== set up containers ================================================
121   // Cluster Container
122   AliClusterContainer *clusCont = correlationtask->AddClusterContainer(nClusters);
123
124   // Particle Container
125   AliParticleContainer *partCont = correlationtask->AddParticleContainer(nTracks);
126   
127   // Jet Containers
128   AliJetContainer *jetCont0 = correlationtask->AddJetContainer(nJets, cutType, JetRadius);
129   AliJetContainer *jetCont1 = correlationtask->AddJetContainer(nJets, cutType, JetRadius);
130   correlationtask->SetContainerAllJets(0);
131   correlationtask->SetContainerPIDJets(1);
132
133   // jet container cuts..
134   correlationtask->SetJetPtCut(JetPtcut, 1);
135   correlationtask->SetPercAreaCut(0.6, 1); 
136
137   // ===================================================================
138   // for manually doing Track Cuts
139   // ESD track quality cuts
140   AliESDtrackCuts *esdTrackCuts = 0x0;
141   gROOT->LoadMacro("$ALICE_ROOT/PWGJE/macros/CreateTrackCutsPWGJE.C");
142   esdTrackCuts = CreateTrackCutsPWGJE(esdcuts);
143   correlationtask->SetTrackCuts(esdTrackCuts);
144
145   //-------------------------------------------------------
146   // Final settings, pass to manager and set the containers
147   //-------------------------------------------------------
148   mgr->AddTask(correlationtask);
149
150   // Create containers for input/output
151   mgr->ConnectInput (correlationtask, 0, mgr->GetCommonInputContainer() );
152   AliAnalysisDataContainer *cojeth = mgr->CreateContainer(name,
153                                                            TList::Class(),
154                                                            AliAnalysisManager::kOutputContainer,
155                                                            outfilename);
156
157   mgr->ConnectOutput(correlationtask,1,cojeth);
158   return correlationtask;
159 }