AliAnalysisTask* AddTask(Bool_t AnalysisMC, const Char_t* taskname, Int_t typerun, UInt_t kTriggerInt[], Float_t minc[], Float_t maxc[] )
{
// Creates a pid task and adds it to the analysis manager
// Get the pointer to the existing analysis manager via the static
//access method
//=========================================================================
AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
if (!mgr) {
Error("AddTaskHighPtDeDx", "No analysis manager to connect to.");
return NULL;
}
// Check the analysis type using the event handlers connected to the
// analysis manager The availability of MC handler can also be
// checked here.
// =========================================================================
if (!mgr->GetInputEventHandler()) {
Error("AddTaskHighPtDeDx", "This task requires an input event handler");
return NULL;
}
//
// Add track filters, with Golden Cuts
//
AliAnalysisFilter* trackFilterGolden = new AliAnalysisFilter("trackFilter");
AliESDtrackCuts* esdTrackCutsGolden =
AliESDtrackCuts::GetStandardITSTPCTrackCuts2010(kTRUE);
trackFilterGolden->AddCuts(esdTrackCutsGolden);
//old cuts without golden cut
AliAnalysisFilter* trackFilter0 = new AliAnalysisFilter("trackFilter");
Bool_t clusterCut=0;
Bool_t selPrimaries=kTRUE;
AliESDtrackCuts* esdTrackCutsL0 = new AliESDtrackCuts;
// TPC
if(clusterCut == 0) esdTrackCutsL0->SetMinNClustersTPC(70);
else if (clusterCut == 1) {
esdTrackCutsL0->SetMinNCrossedRowsTPC(70);
esdTrackCutsL0->SetMinRatioCrossedRowsOverFindableClustersTPC(0.8);
}
else {
AliWarningClass(Form("Wrong value of the clusterCut parameter (%d), using cut on Nclusters",clusterCut));
esdTrackCutsL0->SetMinNClustersTPC(70);
}
esdTrackCutsL0->SetMaxChi2PerClusterTPC(4);
esdTrackCutsL0->SetAcceptKinkDaughters(kFALSE);
esdTrackCutsL0->SetRequireTPCRefit(kTRUE);
// ITS
esdTrackCutsL0->SetRequireITSRefit(kTRUE);
esdTrackCutsL0->SetClusterRequirementITS(AliESDtrackCuts::kSPD,
AliESDtrackCuts::kAny);
if(selPrimaries) {
// 7*(0.0026+0.0050/pt^1.01)
esdTrackCutsL0->SetMaxDCAToVertexXYPtDep("0.0182+0.0350/pt^1.01");
}
esdTrackCutsL0->SetMaxDCAToVertexZ(2);
esdTrackCutsL0->SetDCAToVertex2D(kFALSE);
esdTrackCutsL0->SetRequireSigmaToVertex(kFALSE);
esdTrackCutsL0->SetMaxChi2PerClusterITS(1e10);
esdTrackCutsL0->SetMaxChi2TPCConstrainedGlobal(1e10);
trackFilter0->AddCuts(esdTrackCutsL0);
AliAnalysisFilter* trackFilterTPC = new AliAnalysisFilter("trackFilterTPC");
AliESDtrackCuts* esdTrackCutsTPC =
AliESDtrackCuts::GetStandardTPCOnlyTrackCuts();
trackFilterTPC->AddCuts(esdTrackCutsTPC);
// Create the task and configure it
//========================================================================
if(typerun==2){//heavy ion analysis
AliAnalysisTaskHighPtDeDxV0* taskHighPtDeDxV0[6];
for( Int_t i=0; i<6; ++i ){
taskHighPtDeDxV0[i]=0;
Char_t TaskName[256]={0};
sprintf(TaskName,"%s_%1.0f_%1.0f",taskname,minc[i],maxc[i]);
taskHighPtDeDxV0[i] = new AliAnalysisTaskHighPtDeDxV0(TaskName);
TString type = mgr->GetInputEventHandler()->GetDataType(); // can be "ESD" or "AOD"
taskHighPtDeDxV0[i]->SetAnalysisType(type);
taskHighPtDeDxV0[i]->SetAnalysisMC(AnalysisMC);
taskHighPtDeDxV0[i]->SetAnalysisPbPb(kTRUE);
taskHighPtDeDxV0[i]->SetProduceTPCBranch(kFALSE);
taskHighPtDeDxV0[i]->SetDebugLevel(0);
taskHighPtDeDxV0[i]->SetEtaCut(0.8);
taskHighPtDeDxV0[i]->SetVtxCut(10.0);
taskHighPtDeDxV0[i]->SetMinPt(0.0); // def: 2.0
taskHighPtDeDxV0[i]->SetMassCut(0.1); // def: 0.03
taskHighPtDeDxV0[i]->SetTreeOption(1);
taskHighPtDeDxV0[i]->SetRequireRecV0(kFALSE); // def: kTRUE
taskHighPtDeDxV0[i]->SetStoreMcIn(kTRUE); // def: kFALSE
taskHighPtDeDxV0[i]->SetTrigger1(kTriggerInt[0]);
taskHighPtDeDxV0[i]->SetTrigger2(kTriggerInt[1]);
taskHighPtDeDxV0[i]->SetMinCent(minc[i]);
taskHighPtDeDxV0[i]->SetMaxCent(maxc[i]);
//Set Filtesr
taskHighPtDeDxV0[i]->SetTrackFilterGolden(trackFilterGolden);
taskHighPtDeDxV0[i]->SetTrackFilter(trackFilter0);
taskHighPtDeDxV0[i]->SetTrackFilterTPC(trackFilterTPC);
mgr->AddTask(taskHighPtDeDxV0[i]);
}
// Create ONLY the output containers for the data produced by the
// task. Get and connect other common input/output containers via
// the manager as below
//=======================================================================
AliAnalysisDataContainer *cout_hist[6];
for( Int_t i=0; i<6; ++i ){
cout_hist[i]=0;
Char_t outFileName[256]={0};
sprintf(outFileName,"%s_Tree_%1.0f_%1.0f.root",taskname,minc[i],maxc[i]);
//AliAnalysisDataContainer *cout_hist = 0;
cout_hist[i] = mgr->CreateContainer(Form("output_%1.0f_%1.0f",minc[i],maxc[i]), TList::Class(), AliAnalysisManager::kOutputContainer, outFileName);
mgr->ConnectInput (taskHighPtDeDxV0[i], 0, mgr->GetCommonInputContainer());
mgr->ConnectOutput(taskHighPtDeDxV0[i], 1, cout_hist[i]);
}
// Return task pointer at the end
return taskHighPtDeDxV0[0];
}
if(typerun==3){//pp analysis
AliAnalysisTaskHighPtDeDxV0* taskHighPtDeDxV0 = new AliAnalysisTaskHighPtDeDxV0("taskHighPtDeDxV0pp");
TString type = mgr->GetInputEventHandler()->GetDataType(); // can be "ESD" or "AOD"
taskHighPtDeDxV0->SetAnalysisType(type);
taskHighPtDeDxV0->SetAnalysisMC(AnalysisMC);
taskHighPtDeDxV0->SetAnalysisPbPb(kFALSE);
taskHighPtDeDxV0->SetProduceTPCBranch(kFALSE);
taskHighPtDeDxV0->SetDebugLevel(0);
taskHighPtDeDxV0->SetEtaCut(0.8);
taskHighPtDeDxV0->SetVtxCut(10.0);
taskHighPtDeDxV0->SetMinPt(0.0); // def: 2.0
taskHighPtDeDxV0->SetMassCut(0.03); // def: 0.03
taskHighPtDeDxV0->SetTreeOption(1);
taskHighPtDeDxV0->SetRequireRecV0(kTRUE); // def: kTRUE
taskHighPtDeDxV0->SetStoreMcIn(kFALSE); // def: kFALSE
taskHighPtDeDxV0->SetTrigger1(kTriggerInt[0]);
taskHighPtDeDxV0->SetTrigger2(kTriggerInt[1]);
//Set Filtesr
taskHighPtDeDxV0->SetTrackFilterGolden(trackFilterGolden);
taskHighPtDeDxV0->SetTrackFilter(trackFilter0);
taskHighPtDeDxV0->SetTrackFilterTPC(trackFilterTPC);
mgr->AddTask(taskHighPtDeDxV0);
// Create ONLY the output containers for the data produced by the
// task. Get and connect other common input/output containers via
// the manager as below
//=======================================================================
AliAnalysisDataContainer *cout_histdedxv0;
cout_histdedxv0=0;
Char_t outFileName[256]={0};
sprintf(outFileName,"%s_Tree.root",taskname);
//AliAnalysisDataContainer *cout_hist = 0;
cout_histdedxv0 = mgr->CreateContainer("output", TList::Class(), AliAnalysisManager::kOutputContainer, outFileName);
mgr->ConnectInput (taskHighPtDeDxV0, 0, mgr->GetCommonInputContainer());
mgr->ConnectOutput(taskHighPtDeDxV0, 1, cout_histdedxv0);
// Return task pointer at the end
return taskHighPtDeDxV0;
}
}
AddTaskHighPtDeDxV0.C:100 AddTaskHighPtDeDxV0.C:101 AddTaskHighPtDeDxV0.C:102 AddTaskHighPtDeDxV0.C:103 AddTaskHighPtDeDxV0.C:104 AddTaskHighPtDeDxV0.C:105 AddTaskHighPtDeDxV0.C:106 AddTaskHighPtDeDxV0.C:107 AddTaskHighPtDeDxV0.C:108 AddTaskHighPtDeDxV0.C:109 AddTaskHighPtDeDxV0.C:110 AddTaskHighPtDeDxV0.C:111 AddTaskHighPtDeDxV0.C:112 AddTaskHighPtDeDxV0.C:113 AddTaskHighPtDeDxV0.C:114 AddTaskHighPtDeDxV0.C:115 AddTaskHighPtDeDxV0.C:116 AddTaskHighPtDeDxV0.C:117 AddTaskHighPtDeDxV0.C:118 AddTaskHighPtDeDxV0.C:119 AddTaskHighPtDeDxV0.C:120 AddTaskHighPtDeDxV0.C:121 AddTaskHighPtDeDxV0.C:122 AddTaskHighPtDeDxV0.C:123 AddTaskHighPtDeDxV0.C:124 AddTaskHighPtDeDxV0.C:125 AddTaskHighPtDeDxV0.C:126 AddTaskHighPtDeDxV0.C:127 AddTaskHighPtDeDxV0.C:128 AddTaskHighPtDeDxV0.C:129 AddTaskHighPtDeDxV0.C:130 AddTaskHighPtDeDxV0.C:131 AddTaskHighPtDeDxV0.C:132 AddTaskHighPtDeDxV0.C:133 AddTaskHighPtDeDxV0.C:134 AddTaskHighPtDeDxV0.C:135 AddTaskHighPtDeDxV0.C:136 AddTaskHighPtDeDxV0.C:137 AddTaskHighPtDeDxV0.C:138 AddTaskHighPtDeDxV0.C:139 AddTaskHighPtDeDxV0.C:140 AddTaskHighPtDeDxV0.C:141 AddTaskHighPtDeDxV0.C:142 AddTaskHighPtDeDxV0.C:143 AddTaskHighPtDeDxV0.C:144 AddTaskHighPtDeDxV0.C:145 AddTaskHighPtDeDxV0.C:146 AddTaskHighPtDeDxV0.C:147 AddTaskHighPtDeDxV0.C:148 AddTaskHighPtDeDxV0.C:149 AddTaskHighPtDeDxV0.C:150 AddTaskHighPtDeDxV0.C:151 AddTaskHighPtDeDxV0.C:152 AddTaskHighPtDeDxV0.C:153 AddTaskHighPtDeDxV0.C:154 AddTaskHighPtDeDxV0.C:155 AddTaskHighPtDeDxV0.C:156 AddTaskHighPtDeDxV0.C:157 AddTaskHighPtDeDxV0.C:158 AddTaskHighPtDeDxV0.C:159 AddTaskHighPtDeDxV0.C:160 AddTaskHighPtDeDxV0.C:161 AddTaskHighPtDeDxV0.C:162 AddTaskHighPtDeDxV0.C:163 AddTaskHighPtDeDxV0.C:164 AddTaskHighPtDeDxV0.C:165 AddTaskHighPtDeDxV0.C:166 AddTaskHighPtDeDxV0.C:167 AddTaskHighPtDeDxV0.C:168 AddTaskHighPtDeDxV0.C:169 AddTaskHighPtDeDxV0.C:170 AddTaskHighPtDeDxV0.C:171 AddTaskHighPtDeDxV0.C:172 AddTaskHighPtDeDxV0.C:173 AddTaskHighPtDeDxV0.C:174 AddTaskHighPtDeDxV0.C:175 AddTaskHighPtDeDxV0.C:176 AddTaskHighPtDeDxV0.C:177 AddTaskHighPtDeDxV0.C:178 AddTaskHighPtDeDxV0.C:179 AddTaskHighPtDeDxV0.C:180 AddTaskHighPtDeDxV0.C:181 AddTaskHighPtDeDxV0.C:182 AddTaskHighPtDeDxV0.C:183 AddTaskHighPtDeDxV0.C:184 AddTaskHighPtDeDxV0.C:185 AddTaskHighPtDeDxV0.C:186 AddTaskHighPtDeDxV0.C:187 AddTaskHighPtDeDxV0.C:188 AddTaskHighPtDeDxV0.C:189 AddTaskHighPtDeDxV0.C:190 AddTaskHighPtDeDxV0.C:191