]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWGJE/EMCALJetTasks/macros/AddTaskPtEMCalTriggerV1.C
fix const subtr tracks. Note: array has no gaps
[u/mrichter/AliRoot.git] / PWGJE / EMCALJetTasks / macros / AddTaskPtEMCalTriggerV1.C
index 70a329db7b280dc978bd151683dfaaf2bc8bba66..888b0424bd2b6a4605af68b11fcf9e3d948bf0b0 100644 (file)
@@ -14,8 +14,10 @@ void AddMCParticleComponent(EMCalTriggerPtAnalysis::AliEMCalTriggerTaskGroup *gr
 void AddEventCounterComponent(EMCalTriggerPtAnalysis::AliEMCalTriggerTaskGroup *group, bool isMC);
 void AddMCJetComponent(EMCalTriggerPtAnalysis::AliEMCalTriggerTaskGroup *group, double minJetPt);
 void AddRecJetComponent(EMCalTriggerPtAnalysis::AliEMCalTriggerTaskGroup *group, AliESDtrackCuts *trackcuts, double minJetPt, bool isMC, bool isSwapEta);
+void CreateJetPtBinning(EMCalTriggerPtAnalysis::AliAnalysisTaskPtEMCalTriggerV1 *task);
 AliESDtrackCuts *CreateDefaultTrackCuts();
 AliESDtrackCuts *CreateHybridTrackCuts();
+AliESDtrackCuts *TrackCutsFactory(const char *trackCutsName);
 
 AliAnalysisTask* AddTaskPtEMCalTriggerV1(
     bool isMC,
@@ -25,7 +27,9 @@ AliAnalysisTask* AddTaskPtEMCalTriggerV1(
     const char *nclusterContainer = "",
     const char *njetcontainerData = "",
     const char *njetcontainerMC = "",
-    double jetradius = 0.5
+    const char *ntriggerContainer = "",
+    double jetradius = 0.5,
+    const char *ntrackcuts = "standard"
 )
 {
   //AliLog::SetClassDebugLevel("EMCalTriggerPtAnalysis::AliAnalysisTaskPtEMCalTrigger", 2);
@@ -42,9 +46,11 @@ AliAnalysisTask* AddTaskPtEMCalTriggerV1(
   }
 
   bool isSwapEta = TString(period).CompareTo("LHC13f") ? kFALSE : kTRUE;
-  EMCalTriggerPtAnalysis::AliAnalysisTaskPtEMCalTriggerV1 *pttriggertask = new EMCalTriggerPtAnalysis::AliAnalysisTaskPtEMCalTriggerV1("ptemcaltriggertask");
+  EMCalTriggerPtAnalysis::AliAnalysisTaskPtEMCalTriggerV1 *pttriggertask = new EMCalTriggerPtAnalysis::AliAnalysisTaskPtEMCalTriggerV1(Form("ptemcaltriggertask%s", ntrackcuts));
   //pttriggertask->SelectCollisionCandidates(AliVEvent::kINT7 | AliVEvent::kEMC7);                          // Select both INT7 or EMC7 triggered events
   pttriggertask->SelectCollisionCandidates(AliVEvent::kAny);
+  if(isMC) pttriggertask->SetSwapThresholds();
+  CreateJetPtBinning(pttriggertask);
 
   mgr->AddTask(pttriggertask);
   if(usePythiaHard){
@@ -52,8 +58,14 @@ AliAnalysisTask* AddTaskPtEMCalTriggerV1(
   }
 
   // Add components
-  EMCalTriggerPtAnalysis::AliEMCalTriggerTaskGroup *noselect = new EMCalTriggerPtAnalysis::AliEMCalTriggerTaskGroup("noselect");
-  noselect->AddAnalysisComponent(new EMCalTriggerPtAnalysis::AliEMCalTriggerPatchAnalysisComponent("patchanalysis"));
+  if(strlen(ntriggerContainer)){
+    pttriggertask->SetCaloTriggerPatchInfoName(ntriggerContainer);
+    EMCalTriggerPtAnalysis::AliEMCalTriggerTaskGroup *noselect = new EMCalTriggerPtAnalysis::AliEMCalTriggerTaskGroup("noselect");
+    noselect->AddAnalysisComponent(new EMCalTriggerPtAnalysis::AliEMCalTriggerPatchAnalysisComponent("patchanalysis"));
+    pttriggertask->AddAnalysisGroup(noselect);
+  } else {
+    pttriggertask->SetCaloTriggerPatchInfoName("");
+  }
 
   double jetpt[4] = {40., 60., 80., 100.};
   EMCalTriggerPtAnalysis::AliEMCalTriggerTaskGroup *defaultselect = new EMCalTriggerPtAnalysis::AliEMCalTriggerTaskGroup("defaultselect");
@@ -64,15 +76,20 @@ AliAnalysisTask* AddTaskPtEMCalTriggerV1(
   AddEventCounterComponent(defaultselect, isMC);
   if(isMC){
     AddMCParticleComponent(defaultselect);
+    AddMCJetComponent(defaultselect, 20.);
+    /*
     for(int ijpt = 0; ijpt < 4; ijpt++)
       AddMCJetComponent(defaultselect, jetpt[ijpt]);
+    */
   }
   AddClusterComponent(defaultselect, isMC);
-  AddTrackComponent(defaultselect, CreateDefaultTrackCuts(), isMC, isSwapEta);
-  for(int ijpt = 0; ijpt < 4; ijpt++)
-    AddRecJetComponent(defaultselect, CreateDefaultTrackCuts(), jetpt[ijpt], isMC, isSwapEta);
+  AddTrackComponent(defaultselect, TrackCutsFactory(ntrackcuts), isMC, isSwapEta);
+  AddRecJetComponent(defaultselect, TrackCutsFactory(ntrackcuts), 20., isMC, isSwapEta);
+  /*
+   * for(int ijpt = 0; ijpt < 4; ijpt++)
+       AddRecJetComponent(defaultselect, TrackCutsFactory(ntrackcuts), jetpt[ijpt], isMC, isSwapEta);
+   */
 
-  pttriggertask->AddAnalysisGroup(noselect);
   pttriggertask->AddAnalysisGroup(defaultselect);
 
   // Add containers
@@ -85,30 +102,28 @@ AliAnalysisTask* AddTaskPtEMCalTriggerV1(
 
   // Handle Jet Containers
   if(strlen(njetcontainerData)){
-    AliJetContainer *jetcontainerData = pttriggertask->AddJetContainer(njetcontainerData, "TPC", jetradius);
+    AliJetContainer *jetcontainerData = pttriggertask->AddJetContainer(njetcontainerData, "EMCAL", jetradius);
     pttriggertask->SetDataJetContainerName("PtTriggerTaskJetsData");
     jetcontainerData->ConnectParticleContainer(trackContainer);
     jetcontainerData->SetName("PtTriggerTaskJetsData");
     jetcontainerData->SetJetPtCut(20.);
-    jetcontainerData->SetJetEtaPhiEMCAL();
     printf("jet container added for Data\n");
   }
   if(isMC && strlen(njetcontainerMC)){
-    AliJetContainer *jetcontainerMC = pttriggertask->AddJetContainer(njetcontainerMC, "TPC", jetradius);
+    AliJetContainer *jetcontainerMC = pttriggertask->AddJetContainer(njetcontainerMC, "EMCAL", jetradius);
     pttriggertask->SetMCJetContainerName("PtTriggerTaskJetsMC");
     jetcontainerMC->ConnectParticleContainer(mcpartcont);
     jetcontainerMC->SetName("PtTriggerTaskJetsMC");
     jetcontainerMC->SetJetPtCut(20.);
-    jetcontainerMC->SetJetEtaPhiEMCAL();
     printf("Jet container added for MC");
   }
 
   TString containerName = mgr->GetCommonFileName();
-  containerName += ":PtEMCalTriggerTask";
+  containerName += ":PtEMCalTriggerTask" + TString(ntrackcuts);
   printf("container name: %s\n", containerName.Data());
 
   AliAnalysisDataContainer *cinput = mgr->GetCommonInputContainer();
-  AliAnalysisDataContainer *coutput = mgr->CreateContainer("results", TList::Class(),    AliAnalysisManager::kOutputContainer, containerName.Data());
+  AliAnalysisDataContainer *coutput = mgr->CreateContainer(Form("TriggerTracksResults%s", ntrackcuts), TList::Class(),    AliAnalysisManager::kOutputContainer, containerName.Data());
 
   //Connect input/output
   mgr->ConnectInput(pttriggertask, 0, cinput);
@@ -162,6 +177,13 @@ void AddRecJetComponent(EMCalTriggerPtAnalysis::AliEMCalTriggerTaskGroup *group,
   group->AddAnalysisComponent(jetana);
 }
 
+void CreateJetPtBinning(EMCalTriggerPtAnalysis::AliAnalysisTaskPtEMCalTriggerV1 *task){
+  // Linear binning in steps of 10 GeV/c up to 200 GeV/c
+  TArrayD binlimits(21);
+  for(int i = 0; i < 21; i++) binlimits[i] = 10.*i;
+  task->SetBinning("jetpt", binlimits);
+}
+
 AliESDtrackCuts *CreateDefaultTrackCuts(){
   AliESDtrackCuts *standardTrackCuts = AliESDtrackCuts::GetStandardITSTPCTrackCuts2011(true, 1);
   standardTrackCuts->SetName("Standard Track cuts");
@@ -180,3 +202,9 @@ AliESDtrackCuts *CreateHybridTrackCuts(){
   hybridTrackCuts->SetMaxFractionSharedTPCClusters(0.4);
   return hybridTrackCuts;
 }
+
+AliESDtrackCuts* TrackCutsFactory(const char* trackCutsName) {
+  if(!strcmp(trackCutsName, "standard")) return CreateDefaultTrackCuts();
+  else if(!strcmp(trackCutsName, "hybrid")) return CreateHybridTrackCuts();
+  return NULL;
+}