]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGJE/EMCALJetTasks/macros/AddTaskEmcalDiJetAna.C
from Marta
[u/mrichter/AliRoot.git] / PWGJE / EMCALJetTasks / macros / AddTaskEmcalDiJetAna.C
1 Double_t fitf(Double_t *x, Double_t *par) {
2   //5 parameters, 0: transition from f0 to f2, 1: pol0, 2-4: pol2
3   Double_t trans = par[0];
4
5   TF1 *f0 = new TF1("f0","pol0",0,trans);
6   TF1 *f2 = new TF1("f2","pol2",trans,100);
7
8   Double_t fitval = 0.;
9   if(x[0]<par[0]) 
10     fitval = par[1];
11   else
12     fitval = par[2]+x[0]*par[3]+x[0]*x[0]*par[4];
13
14   return fitval;
15
16 }
17
18 AliAnalysisTaskEmcalDiJetAna* AddTaskEmcalDiJetAna(TString     kTracksName         = "PicoTracks", 
19                                                    TString     kClusName           = "caloClusterCorr",
20                                                    Double_t    R                   = 0.4, 
21                                                    Double_t    ptminTrack          = 0.15, 
22                                                    Double_t    etminClus           = 0.3, 
23                                                    Int_t       rhoType             = 0,
24                                                    TString     trigClass           = "",
25                                                    const char *CentEst             = "V0A",
26                                                    Int_t       pSel                = AliVEvent::kINT7,
27                                                    Int_t       matchFullCh         = AliAnalysisTaskEmcalDiJetBase::kNoMatching,
28                                                    Double_t    ptTrackBias         = 0.,
29                                                    Int_t       corrType            = AliAnalysisTaskEmcalDiJetBase::kCorrelateTwo
30                                                    ) {
31   
32   enum AlgoType {kKT, kANTIKT};
33   enum JetType  {kFULLJETS, kCHARGEDJETS, kNEUTRALJETS};
34
35   // #### Define manager and data container names
36   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
37   if (!mgr) {
38     ::Error("AddTaskEmcalDiJet", "No analysis manager to connect to.");
39     return NULL;
40   }
41
42   // Check the analysis type using the event handlers connected to the analysis manager.
43   //==============================================================================
44   if (!mgr->GetInputEventHandler())
45     {
46       ::Error("AddTaskEmcalDiJet", "This task requires an input event handler");
47       return NULL;
48     }
49
50   // #### Add necessary jet finder tasks
51   gROOT->LoadMacro("$ALICE_ROOT/PWGJE/EMCALJetTasks/macros/AddTaskEmcalJet.C");
52
53   AliEmcalJetTask* jetFinderTaskFull    = AddTaskEmcalJet(kTracksName, kClusName, kANTIKT, R, kFULLJETS, ptminTrack, etminClus);
54   AliEmcalJetTask* jetFinderTaskCharged = AddTaskEmcalJet(kTracksName, kClusName, kANTIKT, R, kCHARGEDJETS, ptminTrack, etminClus);
55
56   TString strJetsFull = jetFinderTaskFull->GetName();
57   TString strJetsCh   = jetFinderTaskCharged->GetName();
58
59   // Add kt jet finder and rho task in case we want background subtraction
60   gROOT->LoadMacro("$ALICE_ROOT/PWGJE/EMCALJetTasks/macros/AddTaskRhoSparse.C");
61   AliEmcalJetTask *jetFinderKt;
62   AliEmcalJetTask *jetFinderAKt;
63   AliAnalysisTaskRhoSparse *rhoTask;
64   if(rhoType==1) {
65     jetFinderKt   = AddTaskEmcalJet(kTracksName, kClusName, kKT, R, kCHARGEDJETS, ptminTrack, etminClus);
66     jetFinderKt->SetMinJetPt(0.);
67     jetFinderAKt  = AddTaskEmcalJet(kTracksName, kClusName, kANTIKT, R, kCHARGEDJETS, ptminTrack, etminClus);
68     
69     TF1 *fScale = new TF1("fScale","1.42",0.,100.);
70     /*
71     TF1 *fScale = new TF1("fit",fitf,0,100,5);
72     fScale->SetParameters(60.,1.41363e+00,7.95329e-01,1.95281e-02,-1.55196e-04);
73     */
74     rhoTask = AddTaskRhoSparse(
75                                jetFinderKt->GetName(),
76                                jetFinderAKt->GetName(),
77                                kTracksName,
78                                kClusName,
79                                Form("RhoSparseR%03d",(int)(100*R)),
80                                R,
81                                AliAnalysisTaskEmcal::kTPC,
82                                0.01,
83                                0.15,
84                                0,
85                                fScale,
86                                0,
87                                kTRUE,
88                                Form("RhoSparseR%03d",(int)(100*R)),
89                                kTRUE
90                                );
91     rhoTask->SetCentralityEstimator(CentEst);
92  
93   }
94   TString wagonName = Form("DiJet_%s_%s_Rho%dTC%sMatch%dHadTrig%d",strJetsFull.Data(),strJetsCh.Data(),rhoType,trigClass.Data(),matchFullCh,(Int_t)(ptTrackBias));
95
96   //Configure DiJet task
97   AliAnalysisTaskEmcalDiJetAna *taskDiJet = NULL;
98   taskDiJet = new AliAnalysisTaskEmcalDiJetAna(wagonName.Data());
99  
100   taskDiJet->SetTriggerClass(trigClass.Data());
101   if(ptminTrack==0.) {
102     taskDiJet->SetIsPythiaPtHard(kTRUE);
103     taskDiJet->SetDoFullFull(kTRUE);
104   }
105   taskDiJet->SetJetCorrelationType(corrType);
106
107
108   Printf("strJetsFull: %s",strJetsFull.Data());
109   Printf("strJetsCh: %s",strJetsCh.Data());
110
111   taskDiJet->AddParticleContainer(kTracksName.Data());
112   taskDiJet->AddClusterContainer(kClusName.Data());
113    
114   //taskDiJet->SetAnaType(AliAnalysisTaskEmcalDev::kEMCAL);
115
116   taskDiJet->SetContainerFull(0);
117   taskDiJet->SetContainerCharged(1);
118   taskDiJet->AddJetContainer(strJetsFull.Data(),"EMCAL",R);
119   taskDiJet->AddJetContainer(strJetsCh.Data(),"TPC",R);
120
121   for(Int_t i=0; i<2; i++) {
122     taskDiJet->SetPercAreaCut(0.6, i);
123     taskDiJet->SetPtBiasJetTrack(ptTrackBias,i);
124   }
125
126   taskDiJet->SetRhoType(rhoType);
127   if(rhoType==1) {
128     taskDiJet->SetRhoName(rhoTask->GetRhoScaledName(),0);
129     taskDiJet->SetRhoName(rhoTask->GetRhoName(),1);
130   }
131
132   taskDiJet->SetCentralityEstimator(CentEst);
133
134   taskDiJet->SelectCollisionCandidates(pSel);
135
136   taskDiJet->SetFullChargedMatchingType(matchFullCh);
137
138   taskDiJet->SetDoChargedCharged(kTRUE);
139   taskDiJet->SetDoFullCharged(kTRUE);
140   taskDiJet->SetMatchFullCharged(kTRUE);
141
142
143   mgr->AddTask(taskDiJet);
144
145   //Connnect input
146   mgr->ConnectInput (taskDiJet, 0, mgr->GetCommonInputContainer() );
147
148   //Connect output
149   AliAnalysisDataContainer *coutput1 = 0x0;
150
151   TString contName(wagonName);
152   contName += "_histos";
153
154   //  TString outputfile = Form("%s:%s",AliAnalysisManager::GetCommonFileName(),wagonName.Data());
155   TString outputfile = Form("%s",AliAnalysisManager::GetCommonFileName());
156
157   coutput1 = mgr->CreateContainer(contName.Data(), TList::Class(),AliAnalysisManager::kOutputContainer,outputfile);
158
159   mgr->ConnectOutput(taskDiJet,1,coutput1);
160   
161   return taskDiJet;
162 }