AliAnalysisTaskTOFSpectraPbPb * AddAnalysisTaskTOFSpectraPbPb(Bool_t mcFlag = kFALSE, Bool_t mcTuneFlag = kFALSE, Bool_t pbpbFlag = kFALSE) { /* check analysis manager */ AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager(); if (!mgr) { Error("AddAnalysisTaskTOFSpectraPbPb", "cannot get analysis manager"); return NULL; } /* check input event handler */ if (!mgr->GetInputEventHandler()) { Error("AddAnalysisTaskTOFSpectraPbPb", "cannot get input event handler"); return NULL; } /* check input data type */ TString str = mgr->GetInputEventHandler()->GetDataType(); if (str.CompareTo("ESD")) { Error("AddAnalysisTaskTOFSpectraPbPb", "input data type is not \"ESD\""); return NULL; } /* check MC truth event handler */ if (mcFlag) { if (!mgr->GetMCtruthEventHandler()) { Error("AddAnalysisTaskTOFSpectraPbPb", "cannot get MC truth event handler"); return NULL; } } /* get common input data container */ AliAnalysisDataContainer *inputc = mgr->GetCommonInputContainer(); if (!inputc) { Error("AddAnalysisTaskTOFSpectraPbPb", "cannot get common input container"); return NULL; } /* setup output event handler */ AliAODHandler *outputh = (AliAODHandler *)mgr->GetOutputEventHandler(); outputh->SetCreateNonStandardAOD(); outputh->SetOutputFileName("TOFSpectraPbPb.root"); /* create task and connect input/output */ AliAnalysisTaskTOFSpectraPbPb *task = new AliAnalysisTaskTOFSpectraPbPb(); mgr->ConnectInput(task, 0, inputc); /* setup task */ task->SetMCFlag(mcFlag); task->SetMCTuneFlag(mcTuneFlag); task->SetPbPbFlag(pbpbFlag); task->SelectCollisionCandidates(AliVEvent::kAny); task->SetVertexSelectionFlag(kTRUE); task->SetVertexCut(15.0); task->SetRapidityCut(1.0); /* setup TOF calib */ task->GetTOFcalib()->SetRemoveMeanT0(!mcFlag); task->GetTOFcalib()->SetCalibrateTOFsignal(!mcFlag); task->GetTOFcalib()->SetCorrectTExp(kFALSE); /* setup resolution */ Double_t timeReso = 85.; if (mcFlag && !mcTuneFlag) timeReso = 80.; task->SetTimeResolution(timeReso); task->GetESDpid()->GetTOFResponse().SetTimeResolution(timeReso); task->GetTOFT0maker()->SetTimeResolution(timeReso); /* setup track cuts */ AliESDtrackCuts *trackCuts = new AliESDtrackCuts; trackCuts->SetMaxChi2PerClusterTPC(4.5); trackCuts->SetAcceptKinkDaughters(kFALSE); trackCuts->SetRequireTPCRefit(kTRUE); trackCuts->SetRequireITSRefit(kTRUE); trackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD, AliESDtrackCuts::kAny); trackCuts->SetMaxDCAToVertexZ(2); trackCuts->SetDCAToVertex2D(kFALSE); trackCuts->SetRequireSigmaToVertex(kFALSE); trackCuts->SetMaxChi2PerClusterITS(36); trackCuts->SetPtRange(0.15, 10.); trackCuts->SetEtaRange(-0.9, 0.9); task->SetTrackCuts(trackCuts); /* return task */ return task; }