]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGJE/EMCALJetTasks/macros/AddTaskEmcalDiJetAna.C
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWGJE / EMCALJetTasks / macros / AddTaskEmcalDiJetAna.C
1 AliAnalysisTaskEmcalDiJetAna* AddTaskEmcalDiJetAna(TString     kTracksName         = "PicoTracks", 
2                                                    TString     kClusName           = "caloClusterCorr",
3                                                    Double_t    R                   = 0.4, 
4                                                    Double_t    ptminTrack          = 0.15, 
5                                                    Double_t    etminClus           = 0.3, 
6                                                    Int_t       rhoType             = 0,
7                                                    TString     trigClass           = "",
8                                                    const char *CentEst             = "V0A",
9                                                    Int_t       pSel                = AliVEvent::kINT7,
10                                                    Int_t       matchFullCh         = AliAnalysisTaskEmcalDiJetBase::kNoMatching,
11                                                    Double_t    ptTrackBias         = 0.,
12                                                    Int_t       corrType            = AliAnalysisTaskEmcalDiJetBase::kCorrelateTwo,
13                                                    Float_t     nefCut              = 10.,
14                                                    Int_t       nCentBins           = 5,
15                                                    Double_t    scaleFact           = 1.28
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,0.005,1,"Jet",1.);
40   AliEmcalJetTask* jetFinderTaskCharged = AddTaskEmcalJet(kTracksName, kClusName, kANTIKT, R, kCHARGEDJETS, ptminTrack, etminClus,0.005,1,"Jet",1.);
41   jetFinderTaskFull->SelectCollisionCandidates(AliVEvent::kAny);
42   jetFinderTaskCharged->SelectCollisionCandidates(AliVEvent::kAny);
43
44
45   TString strJetsFull = jetFinderTaskFull->GetName();
46   TString strJetsCh   = jetFinderTaskCharged->GetName();
47
48   // Add kt jet finder and rho task in case we want background subtraction
49   gROOT->LoadMacro("$ALICE_ROOT/PWGJE/EMCALJetTasks/macros/AddTaskRhoSparse.C");
50   AliEmcalJetTask *jetFinderKt;
51   AliEmcalJetTask *jetFinderAKt;
52   AliAnalysisTaskRhoSparse *rhoTask;
53   if(rhoType==1) {
54     jetFinderKt   = AddTaskEmcalJet(kTracksName, kClusName, kKT, R, kCHARGEDJETS, ptminTrack, etminClus,0.005,1,"Jet",0.);
55     jetFinderAKt  = AddTaskEmcalJet(kTracksName, kClusName, kANTIKT, R, kCHARGEDJETS, ptminTrack, etminClus,0.005,1,"Jet",1.);
56     jetFinderKt->SelectCollisionCandidates(AliVEvent::kAny);
57     jetFinderAKt->SelectCollisionCandidates(AliVEvent::kAny);
58
59     TF1 *fScale = new TF1("fScale","[0]",0.,100.);
60     fScale->SetParameter(0,scaleFact);
61     TString rhoSparseName = Form("RhoSparseR%03d",(int)(100*R));
62     rhoTask = AddTaskRhoSparse(jetFinderKt->GetName(),
63                                jetFinderAKt->GetName(),
64                                kTracksName.Data(),
65                                kClusName.Data(),
66                                rhoSparseName.Data(),
67                                R,
68                                "TPC",
69                                0.01,
70                                0.15,
71                                0,
72                                fScale,
73                                0,
74                                kTRUE,
75                                rhoSparseName.Data(),
76                                kTRUE
77                                );
78     rhoTask->SetCentralityEstimator(CentEst);
79  
80   }
81   TString wagonName = Form("DiJet_%s_%s_Rho%dTC%sMatch%dHadTrig%d",strJetsFull.Data(),strJetsCh.Data(),rhoType,trigClass.Data(),matchFullCh,(Int_t)(ptTrackBias));
82
83   //Configure DiJet task
84   AliAnalysisTaskEmcalDiJetAna *taskDiJet = NULL;
85   taskDiJet = new AliAnalysisTaskEmcalDiJetAna(wagonName.Data());
86
87   taskDiJet->SetUseAliAnaUtils(kTRUE);
88   taskDiJet->SetVzRange(-10.,10.);
89   taskDiJet->SetTriggerClass(trigClass.Data());
90
91   if(ptminTrack==0.) {
92     taskDiJet->SetIsPythia(kTRUE);
93     taskDiJet->SetDoFullFull(kTRUE);
94   }
95   taskDiJet->SetJetCorrelationType(corrType);
96
97
98   Printf("strJetsFull: %s",strJetsFull.Data());
99   Printf("strJetsCh: %s",strJetsCh.Data());
100
101   taskDiJet->AddParticleContainer(kTracksName.Data());
102   taskDiJet->AddClusterContainer(kClusName.Data());
103    
104   taskDiJet->SetContainerFull(0);
105   taskDiJet->SetContainerCharged(1);
106   taskDiJet->AddJetContainer(strJetsFull.Data(),"EMCAL",R);
107   taskDiJet->AddJetContainer(strJetsCh.Data(),"TPC",R);
108
109   taskDiJet->SetZLeadingCut(0.98,0.98,0);
110   taskDiJet->SetNEFCut(0.,nefCut,0);
111
112   for(Int_t i=0; i<2; i++) {
113     taskDiJet->SetPercAreaCut(0.6, i);
114     taskDiJet->SetPtBiasJetTrack(ptTrackBias,i);
115   }
116
117   taskDiJet->SetRhoType(rhoType);
118   if(rhoType==1) {
119     taskDiJet->SetRhoName(rhoTask->GetOutRhoScaledName(),0);
120     taskDiJet->SetRhoName(rhoTask->GetOutRhoName(),1);
121   }
122
123   taskDiJet->SetCentralityEstimator(CentEst);
124   taskDiJet->SetCentRange(0.,100.);
125   taskDiJet->SetNCentBins(nCentBins);
126
127   taskDiJet->SelectCollisionCandidates(pSel);
128
129   taskDiJet->SetFullChargedMatchingType(matchFullCh);
130
131   taskDiJet->SetDoChargedCharged(kTRUE);
132   taskDiJet->SetDoFullCharged(kTRUE);
133   taskDiJet->SetMatchFullCharged(kFALSE);
134
135   mgr->AddTask(taskDiJet);
136
137   //Connnect input
138   mgr->ConnectInput (taskDiJet, 0, mgr->GetCommonInputContainer() );
139
140   //Connect output
141   AliAnalysisDataContainer *coutput1 = 0x0;
142
143   TString contName(wagonName);
144   contName += "_histos";
145
146   //  TString outputfile = Form("%s:%s",AliAnalysisManager::GetCommonFileName(),wagonName.Data());
147   TString outputfile = Form("%s",AliAnalysisManager::GetCommonFileName());
148
149   coutput1 = mgr->CreateContainer(contName.Data(), TList::Class(),AliAnalysisManager::kOutputContainer,outputfile);
150
151   mgr->ConnectOutput(taskDiJet,1,coutput1);
152   
153   return taskDiJet;
154 }