added streamer fix for header pointers and switch for define IO in constructor
[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 *nTracks        = "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    TString cutType                        = "EMCAL",
30    Bool_t   Comments              = 0,
31    Bool_t   IO                            = 0,
32    Int_t esdcuts                          = 10001006
33 )
34 {  
35   
36   // Get the pointer to the existing analysis manager via the static access method.
37   //==============================================================================
38   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
39   if (!mgr)
40   {
41     ::Error("AddTaskEmcalJetHadEPpid", "No analysis manager to connect to.");
42     return NULL;
43   }  
44   
45   // Check the analysis type using the event handlers connected to the analysis manager.
46   //==============================================================================
47   if (!mgr->GetInputEventHandler())
48   {
49     ::Error("AddTaskEmcalJetHadEPpid", "This task requires an input event handler");
50     return NULL;
51   }
52
53   //-------------------------------------------------------
54   // Init the task and do settings
55   //-------------------------------------------------------
56
57   TString name(Form("Correlations_%s", nJets));
58   AliAnalysisTaskEmcalJetHadEPpid *correlationtask = new AliAnalysisTaskEmcalJetHadEPpid(name);
59   correlationtask->SetJetsName(nJets);
60   correlationtask->SetTracksName(nTracks);
61   correlationtask->SetRhoName(nRho);
62   correlationtask->SetLocalRhoName(lrho);
63   correlationtask->SetJetPhi(minPhi,maxPhi);
64   correlationtask->SetJetEta(minEta,maxEta);
65   correlationtask->SetAreaCut(minArea);
66   correlationtask->SetEventMixing(EvtMix);
67   correlationtask->SetTrkBias(TrkBias);
68   correlationtask->SetClusBias(ClusBias);
69   correlationtask->SetTrkEta(TrkEta); 
70   // Added on/after March20, 2014
71   correlationtask->SetdoPID(PID);
72   correlationtask->SetdoPIDtrackBIAS(PIDtrackBIAS);
73   correlationtask->SetvarbinTHnSparse(varbinTHnSparse);
74   correlationtask->SetallpidAXIS(allpidAXIS);
75   correlationtask->SetmakeQAhistos(QAhistos);
76   correlationtask->SetmakeBIAShistos(BIAShistos);  
77   correlationtask->SetmakeextraCORRhistos(extraCORRhistos);
78   correlationtask->SetoldJEThadhistos(oldJEThadhistos);
79   correlationtask->SetJetPtcut(JetPtcut);
80   correlationtask->SetJetRad(JetRadius);
81   correlationtask->SetConstituentCut(constitCut);
82   correlationtask->SetMixingTracks(MixingTracks);
83   correlationtask->SetcutType(cutType);
84   correlationtask->SetdoComments(Comments);
85   correlationtask->SetIOon(IO);
86
87   // =================== set up containers ================================================
88   // Cluster Container
89   AliClusterContainer *clusCont = correlationtask->AddClusterContainer(nClusters);
90
91   // Particle Container
92   AliParticleContainer *partCont = correlationtask->AddParticleContainer(nTracks);
93   
94   // Jet Containers
95   AliJetContainer *jetCont0 = correlationtask->AddJetContainer(nJets, cutType, JetRadius);
96   AliJetContainer *jetCont1 = correlationtask->AddJetContainer(nJets, cutType, JetRadius);
97   correlationtask->SetContainerAllJets(0);
98   correlationtask->SetContainerPIDJets(1);
99
100   // jet container cuts..
101   correlationtask->SetJetPtCut(JetPtcut, 1);
102   correlationtask->SetPercAreaCut(0.6, 1); 
103
104   // ===================================================================
105   // ESD track quality cuts
106   AliESDtrackCuts *esdTrackCuts = 0x0;
107   gROOT->LoadMacro("$ALICE_ROOT/PWGJE/macros/CreateTrackCutsPWGJE.C");
108   esdTrackCuts = CreateTrackCutsPWGJE(esdcuts);
109
110   //-------------------------------------------------------
111   // Final settings, pass to manager and set the containers
112   //-------------------------------------------------------
113   mgr->AddTask(correlationtask);
114
115   // Create containers for input/output
116   mgr->ConnectInput (correlationtask, 0, mgr->GetCommonInputContainer() );
117   AliAnalysisDataContainer *cojeth = mgr->CreateContainer(name,
118                                                            TList::Class(),
119                                                            AliAnalysisManager::kOutputContainer,
120                                                            outfilename);
121
122   mgr->ConnectOutput(correlationtask,1,cojeth);
123   return correlationtask;
124 }