1 void AddTaskPWG4HighPtQAMCAll(char *prodType = "LHC10e14") {
3 AliPWG4HighPtQAMC *taskQAMC00 = AddTaskPWG4HighPtQAMC(prodType,0,0);
4 AliPWG4HighPtQAMC *taskQAMC00 = AddTaskPWG4HighPtQAMC(prodType,0,1);
5 AliPWG4HighPtQAMC *taskQAMC00 = AddTaskPWG4HighPtQAMC(prodType,0,2);
6 AliPWG4HighPtQAMC *taskQAMC00 = AddTaskPWG4HighPtQAMC(prodType,0,3);
7 AliPWG4HighPtQAMC *taskQAMC10 = AddTaskPWG4HighPtQAMC(prodType,1,0);
8 AliPWG4HighPtQAMC *taskQAMC20 = AddTaskPWG4HighPtQAMC(prodType,2,0);
12 AliPWG4HighPtQAMC* AddTaskPWG4HighPtQAMC(char *prodType = "LHC10e14", Int_t trackType = 0, Int_t cuts =0)
14 // Creates HighPtQAMC analysis task and adds it to the analysis manager.
20 // 2: TPConly constrained tracks
22 // A. Get the pointer to the existing analysis manager via the static access method.
23 //==============================================================================
24 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
26 Error("AddTaskPWG4HighPtQMC", "No analysis manager to connect to.");
30 // B. Check the analysis type using the event handlers connected to the analysis
31 // manager. The availability of MC handler can also be checked here.
32 //==============================================================================
33 if (!mgr->GetInputEventHandler()) {
34 ::Error("AddPWG4TaskHighPtQAMC", "This task requires an input event handler");
37 TString type = mgr->GetInputEventHandler()->GetDataType(); // can be "ESD" or "AOD"
38 const char *analysisType = "ESD";
40 // C. Create the task, add it to manager.
41 //===========================================================================
43 //CREATE THE CUTS -----------------------------------------------
45 AliESDtrackCuts *trackCuts = new AliESDtrackCuts("AliESDtrackCuts","Standard Cuts");
47 //Set track cuts for global tracks
48 if(trackType==0 && cuts==0) {
49 // tight global tracks
50 trackCuts = AliESDtrackCuts::GetStandardITSTPCTrackCuts2010(kTRUE,1);
51 trackCuts->SetMinNCrossedRowsTPC(120);
52 trackCuts->SetMinRatioCrossedRowsOverFindableClustersTPC(0.1);// essentially swittches it off
53 trackCuts->SetMaxChi2PerClusterITS(36);
54 trackCuts->SetMaxFractionSharedTPCClusters(0.4);
56 if(trackType==0 && cuts==1) {
57 //Cuts global tracks with ITSrefit requirement for jet analysis
59 trackCuts->SetMinNClustersTPC(80);
60 trackCuts->SetMaxChi2PerClusterTPC(4);
61 trackCuts->SetAcceptKinkDaughters(kFALSE);
62 trackCuts->SetRequireTPCRefit(kTRUE);
63 trackCuts->SetMaxFractionSharedTPCClusters(0.4);
65 trackCuts->SetRequireITSRefit(kTRUE);
67 trackCuts->SetMaxDCAToVertexXY(2.4);
68 trackCuts->SetMaxDCAToVertexZ(3.2);
69 trackCuts->SetDCAToVertex2D(kTRUE);
71 trackCuts->SetMaxChi2PerClusterITS(36);
73 trackCuts->SetRequireSigmaToVertex(kFALSE);
76 if(trackType==0 && cuts==2) {
77 //Cuts global tracks with ITSrefit requirement but without SPD
79 trackCuts->SetMinNClustersTPC(80);
80 trackCuts->SetMaxChi2PerClusterTPC(4);
81 trackCuts->SetAcceptKinkDaughters(kFALSE);
82 trackCuts->SetRequireTPCRefit(kTRUE);
83 trackCuts->SetMaxFractionSharedTPCClusters(0.4);
85 trackCuts->SetRequireITSRefit(kTRUE);
87 trackCuts->SetMaxDCAToVertexXY(2.4);
88 trackCuts->SetMaxDCAToVertexZ(3.2);
89 trackCuts->SetDCAToVertex2D(kTRUE);
91 trackCuts->SetMaxChi2PerClusterITS(36);
92 trackCuts->SetRequireSigmaToVertex(kFALSE);
94 trackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD, AliESDtrackCuts::kNone);
96 if(trackType==0 && cuts==3) {
97 // tight global tracks
98 trackCuts = AliESDtrackCuts::GetStandardITSTPCTrackCuts2010(kFALSE,1);
99 trackCuts->SetMinNCrossedRowsTPC(120);
100 trackCuts->SetMinRatioCrossedRowsOverFindableClustersTPC(0.1);// essentially switches it off
101 trackCuts->SetMaxDCAToVertexXY(2.4);
102 trackCuts->SetMaxDCAToVertexZ(3.2);
103 trackCuts->SetDCAToVertex2D(kTRUE);
104 trackCuts->SetMaxChi2PerClusterITS(36);
105 trackCuts->SetMaxFractionSharedTPCClusters(0.4);
108 //Set track cuts for TPConly tracks
109 if(trackType==1 || trackType==2) {
110 trackCuts = trackCuts->GetStandardTPCOnlyTrackCuts();
111 trackCuts->SetMinNClustersTPC(70);
113 trackCuts->SetEtaRange(-0.9,0.9);
114 trackCuts->SetPtRange(0.15, 1e10);
117 AliPWG4HighPtQAMC *taskPWG4QAMC = new AliPWG4HighPtQAMC(Form("AliPWG4HighPtQAMC%d",trackType));
118 taskPWG4QAMC->SetCuts(trackCuts);
119 taskPWG4QAMC->SetTrackType(trackType);
121 if(!strcmp(prodType, "LHC10e14")) taskPWG4QAMC->SetPtMax(500.);
122 else taskPWG4QAMC->SetPtMax(100.);
124 //taskPWG4QAMC->SetSigmaConstrainedMax(5.);
126 // E. Create ONLY the output containers for the data produced by the task.
127 // Get and connect other common input/output containers via the manager as below
128 //==============================================================================
130 //------ input data ------
131 // AliAnalysisDataContainer *cinput0 = mgr->GetCommonInputContainer();
132 printf("Create output containers \n");
133 TString outputfile = AliAnalysisManager::GetCommonFileName();
134 outputfile += Form(":PWG4_HighPtQAMC%d%d",trackType,cuts);
136 AliAnalysisDataContainer *cout_hist1 = mgr->CreateContainer(Form("qa_histsMC%d%d",trackType,cuts), TList::Class(), AliAnalysisManager::kOutputContainer,outputfile);
138 mgr->AddTask(taskPWG4QAMC);
139 mgr->ConnectInput(taskPWG4QAMC,0,mgr->GetCommonInputContainer());
140 mgr->ConnectOutput(taskPWG4QAMC,0,cout_hist1);
142 // Return task pointer at the end