Added config macro for K* analysis with TPC (S.Singha)
authorfbellini <fbellini@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 2 Dec 2013 08:46:29 +0000 (08:46 +0000)
committerfbellini <fbellini@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 2 Dec 2013 08:46:29 +0000 (08:46 +0000)
PWGLF/RESONANCES/macros/mini/AddAnalysisTaskTPCKStar.C
PWGLF/RESONANCES/macros/mini/ConfigTPCanalysisKStarMC.C [new file with mode: 0644]

index a06b118..b644530 100644 (file)
@@ -26,7 +26,8 @@ AliRsnMiniAnalysisTask * AddAnalysisTaskTPCKStar
    Float_t     nsigmaKa = 2.0,
    Bool_t      enableMonitor = kTRUE,
    Bool_t      IsMcTrueOnly = kFALSE,
-   Bool_t      is2011PbPb = kFALSE,
+   UInt_t      triggerMask = AliVEvent::kMB,
+   //Bool_t      is2011PbPb = kFALSE,
    Int_t       nmix = 0,
    Float_t     maxDiffVzMix = 1.0,
    Float_t     maxDiffMultMix = 10.0,
@@ -47,17 +48,17 @@ AliRsnMiniAnalysisTask * AddAnalysisTaskTPCKStar
    } 
 
    // create the task and configure 
-   TString taskName = Form("TPCKStar%s%s_%i%i", (isPP? "pp" : "PbPb"), (isMC ? "MC" : "Data"), (Int_t)cutPiCandidate,(Int_t)cutKaCandidate );
+   TString taskName = Form("TPCKStar%s%s_%i%i_%s", (isPP? "pp" : "PbPb"), (isMC ? "MC" : "Data"), (Int_t)cutPiCandidate,(Int_t)cutKaCandidate, outNameSuffix.Data() );
    AliRsnMiniAnalysisTask *task = new AliRsnMiniAnalysisTask(taskName.Data(), isMC);
    if (!isMC && !isPP){
      Printf(Form("========== SETTING USE CENTRALITY PATCH AOD049 : %s", (aodN==49)? "yes" : "no"));
      task->SetUseCentralityPatch(aodN==49);
    }
 
-   if(is2011PbPb)
-     task->SelectCollisionCandidates(AliVEvent::kMB | AliVEvent::kCentral | AliVEvent::kSemiCentral);
-   else
-     task->SelectCollisionCandidates(AliVEvent::kMB);
+   //if(is2011PbPb)
+   //task->SelectCollisionCandidates(AliVEvent::kMB | AliVEvent::kCentral | AliVEvent::kSemiCentral);
+   //else
+   task->SelectCollisionCandidates(triggerMask);
 
 
    if (isPP) 
@@ -126,15 +127,18 @@ AliRsnMiniAnalysisTask * AddAnalysisTaskTPCKStar
    
    //
    // -- CONFIG ANALYSIS --------------------------------------------------------------------------
-   gROOT->LoadMacro("$ALICE_ROOT/PWGLF/RESONANCES/macros/mini/ConfigTPCanalysisKStar.C");
-   if (isMC) {
-     if (((Int_t)cutPiCandidate<4) && ((Int_t)cutKaCandidate<4))
-       Printf("========================== MC analysis - no PID used for efficiency estimation");
-     else 
-       Printf("========================== MC analysis - PID cuts used");
-   } else 
-     Printf("========================== DATA analysis - PID cuts used");
-   if (!ConfigTPCanalysisKStar(task, isMC, isPP, "", cutsPair, aodFilterBit, cutPiCandidate, cutKaCandidate, nsigmaPi, nsigmaKa, enableMonitor, isMC&IsMcTrueOnly, aodN)) return 0x0;
+   if(!isMC){
+     gROOT->LoadMacro("$ALICE_ROOT/PWGLF/RESONANCES/macros/mini/ConfigTPCanalysisKStar.C");
+     if (!ConfigTPCanalysisKStar(task, isMC, isPP, "", cutsPair, aodFilterBit, cutPiCandidate, cutKaCandidate, nsigmaPi, nsigmaKa, enableMonitor, isMC&IsMcTrueOnly, aodN)) return 0x0;
+   }
+   else {
+     gROOT->LoadMacro("$ALICE_ROOT/PWGLF/RESONANCES/macros/mini/ConfigTPCanalysisKStarMC.C");
+     if (!ConfigTPCanalysisKStarMC(task, isMC, isPP, "", cutsPair, aodFilterBit, cutPiCandidate, cutKaCandidate, nsigmaPi, nsigmaKa, enableMonitor, isMC&IsMcTrueOnly, 313, aodN)) return 0x0; //K*
+     if (!ConfigTPCanalysisKStarMC(task, isMC, isPP, "", cutsPair, aodFilterBit, cutPiCandidate, cutKaCandidate, nsigmaPi, nsigmaKa, enableMonitor, isMC&IsMcTrueOnly, -313, aodN)) return 0x0; //anti-K* 
+   }
+   
+   
+   
    
    //
    // -- CONTAINERS --------------------------------------------------------------------------------
diff --git a/PWGLF/RESONANCES/macros/mini/ConfigTPCanalysisKStarMC.C b/PWGLF/RESONANCES/macros/mini/ConfigTPCanalysisKStarMC.C
new file mode 100644 (file)
index 0000000..9c97846
--- /dev/null
@@ -0,0 +1,139 @@
+/***************************************************************************
+              fbellini@cern.ch - last modified on 06/08/2012
+
+// *** Configuration script for K*, anti-K* analysis with 2010 PbPb runs ***
+// 
+// A configuration script for RSN package needs to define the followings:
+//
+// (1) decay tree of each resonance to be studied, which is needed to select
+//     true pairs and to assign the right mass to all candidate daughters
+// (2) cuts at all levels: single daughters, tracks, events
+// (3) output objects: histograms or trees
+****************************************************************************/
+
+Bool_t ConfigTPCanalysisKStarMC
+(  
+    AliRsnMiniAnalysisTask *task, 
+    Bool_t                 isMC, 
+    Bool_t                 isPP,
+    const char             *suffix,
+    AliRsnCutSet           *cutsPair,
+    Int_t                  aodFilterBit = 5,
+    AliRsnCutSetDaughterParticle::ERsnDaughterCutSet cutPiCandidate = AliRsnCutSetDaughterParticle::kFastTPCpidNsigma,
+    AliRsnCutSetDaughterParticle::ERsnDaughterCutSet cutKaCandidate = AliRsnCutSetDaughterParticle::kFastTPCpidNsigma,
+    Float_t                nsigmaPi = 2.0,
+    Float_t                nsigmaKa = 2.0,
+    Bool_t                 enableMonitor = kTRUE,
+    Bool_t                 IsMcTrueOnly = kFALSE,
+    Int_t                  Pdg = 313,
+    Int_t                  aodN = 0
+)
+{
+  // manage suffix
+  if (strlen(suffix) > 0) suffix = Form("_%s", suffix);
+  
+  // set daughter cuts
+  AliRsnCutSetDaughterParticle * cutSetQ;
+  AliRsnCutSetDaughterParticle * cutSetPi;
+  AliRsnCutSetDaughterParticle * cutSetK;
+
+  cutSetQ  = new AliRsnCutSetDaughterParticle("cutQuality", AliRsnCutSetDaughterParticle::kQualityStd2010, AliPID::kPion, -1.0, aodFilterBit);
+  cutSetPi = new AliRsnCutSetDaughterParticle(Form("cutPionTPCpp2011_%2.1fsigma",nsigmaPi), cutPiCandidate, AliPID::kPion, nsigmaPi, aodFilterBit);
+  cutSetK  = new AliRsnCutSetDaughterParticle(Form("cutKaonTPCpp2011_%2.1f2sigma",nsigmaKa), cutKaCandidate, AliPID::kKaon, nsigmaKa, aodFilterBit);
+
+  Int_t iCutQ = task->AddTrackCuts(cutSetQ);
+  Int_t iCutPi = task->AddTrackCuts(cutSetPi);
+  Int_t iCutK = task->AddTrackCuts(cutSetK);
+  
+  if(enableMonitor){
+    Printf("======== Monitoring cut AliRsnCutSetDaughterParticle enabled");
+    gROOT->LoadMacro("$ALICE_ROOT/PWGLF/RESONANCES/macros/mini/AddMonitorOutput.C");
+    AddMonitorOutput(isMC, cutSetQ->GetMonitorOutput());
+    AddMonitorOutput(isMC, cutSetPi->GetMonitorOutput());
+    AddMonitorOutput(isMC, cutSetK->GetMonitorOutput());
+  }  
+  
+  // -- Values ------------------------------------------------------------------------------------
+  /* invariant mass   */ Int_t imID   = task->CreateValue(AliRsnMiniValue::kInvMass, kFALSE);
+  /* IM resolution    */ Int_t resID  = task->CreateValue(AliRsnMiniValue::kInvMassRes, kTRUE);
+  /* transv. momentum */ Int_t ptID   = task->CreateValue(AliRsnMiniValue::kPt, kFALSE);
+  /* centrality       */ Int_t centID = task->CreateValue(AliRsnMiniValue::kMult, kFALSE);
+  /* pseudorapidity   */ Int_t etaID  = task->CreateValue(AliRsnMiniValue::kEta, kFALSE);
+  /* rapidity         */ Int_t yID    = task->CreateValue(AliRsnMiniValue::kY, kFALSE);
+
+  // -- Create all needed outputs -----------------------------------------------------------------
+  // use an array for more compact writing, which are different on mixing and charges
+  // [0] = unlike
+  // [1] = mixing
+  // [2] = like ++
+  // [3] = like --
+  Bool_t  use     [10] = { !IsMcTrueOnly,  !IsMcTrueOnly,  !IsMcTrueOnly,  !IsMcTrueOnly ,  !IsMcTrueOnly, !IsMcTrueOnly,  isMC   ,   isMC   ,  isMC   ,   isMC   };
+  Bool_t  useIM   [10] = { 1       ,  1       ,  1       ,  1       ,  1      ,  1      ,  1      ,   1      ,  0      ,   0      };
+  TString name    [10] = {"UnlikePM", "UnlikeMP", "MixingPM", "MixingMP", "LikePP", "LikeMM", "TruesPM",  "TruesMP", "ResPM"  ,  "ResMP"  };
+  TString comp    [10] = {"PAIR"   , "PAIR"   , "MIX"    , "MIX"    , "PAIR"  , "PAIR"  , "TRUE"  ,  "TRUE"  , "TRUE"  ,  "TRUE"  };
+  //TString output  [10] = {"HIST"   , "HIST"   , "HIST"   , "HIST"   , "HIST"  , "HIST"  , "HIST"  ,  "HIST"  , "HIST"  ,  "HIST"  };
+  TString output  [10] = {"SPARSE"   , "SPARSE"   , "SPARSE"   , "SPARSE"   , "SPARSE"  , "SPARSE"  , "SPARSE"  ,  "SPARSE"  , "SPARSE"  ,  "SPARSE"  };
+  Char_t  charge1 [10] = {'+'      , '-'      , '+'      , '-'      , '+'     , '-'     , '+'     ,  '-'     , '+'     ,  '-'     };
+  Char_t  charge2 [10] = {'-'      , '+'      , '-'      , '+'      , '+'     , '-'     , '-'     ,  '+'     , '-'     ,  '+'     };
+  Int_t   cutID1  [10] = { iCutK   ,  iCutK   ,  iCutK   ,  iCutK   ,  iCutK  ,  iCutK  ,  iCutK  ,   iCutK  ,  iCutK  ,   iCutK  };
+  Int_t   cutID2  [10] = { iCutPi  ,  iCutPi  ,  iCutPi  ,  iCutPi  ,  iCutPi ,  iCutPi ,  iCutPi ,   iCutPi ,  iCutPi ,   iCutPi };
+  
+  for (Int_t i = 0; i < 10; i++) {
+    if (!use[i]) continue;
+    if(Pdg > 0) AliRsnMiniOutput *out = task->CreateOutput(Form("kstar1_%s%s", name[i].Data(), suffix), output[i].Data(), comp[i].Data());
+    if(Pdg < 0) AliRsnMiniOutput *out = task->CreateOutput(Form("kstar2_%s%s", name[i].Data(), suffix), output[i].Data(), comp[i].Data());
+    out->SetCutID(0, cutID1[i]);
+    out->SetCutID(1, cutID2[i]);
+    out->SetDaughter(0, AliRsnDaughter::kKaon);
+    out->SetDaughter(1, AliRsnDaughter::kPion);
+    out->SetCharge(0, charge1[i]);
+    out->SetCharge(1, charge2[i]);
+    out->SetMotherPDG(Pdg);//313
+    out->SetMotherMass(0.89594);
+    out->SetPairCuts(cutsPair);
+
+    // axis X: invmass (or resolution)
+    if (useIM[i]) 
+      out->AddAxis(imID, 90, 0.6, 1.5);
+    //else
+    //out->AddAxis(resID, 200, -0.02, 0.02);
+    
+    // axis Y: transverse momentum
+    out->AddAxis(ptID, 300, 0.0, 30.0);
+    
+    // axis Z: centrality-multiplicity
+    if (!isPP)
+      out->AddAxis(centID, 100, 0.0, 100.0);
+    else 
+      out->AddAxis(centID, 400, 0.0, 400.0);
+    
+    // axis W: pseudorapidity
+    //    out->AddAxis(etaID, 20, -1.0, 1.0);
+    // axis J: rapidity
+    //out->AddAxis(yID, 32, -0.8, 0.8);
+    
+  }
+  
+  if (isMC){
+    // create output
+    
+    if(Pdg > 0) {AliRsnMiniOutput *outm = task->CreateOutput(Form("kstar_Mother1%s", suffix), "SPARSE", "MOTHER");}
+    if(Pdg < 0) {AliRsnMiniOutput *outm = task->CreateOutput(Form("kstar_Mother2%s", suffix), "SPARSE", "MOTHER");}
+    outm->SetDaughter(0, AliRsnDaughter::kKaon);
+    outm->SetDaughter(1, AliRsnDaughter::kPion);
+    outm->SetMotherPDG(Pdg);//313
+    outm->SetMotherMass(0.89594);
+    // pair cuts
+    outm->SetPairCuts(cutsPair);
+    // binnings
+    outm->AddAxis(imID, 90, 0.6, 1.5);
+    outm->AddAxis(ptID, 300, 0.0, 30.0);
+    if (!isPP){
+    outm->AddAxis(centID, 100, 0.0, 100.0);
+    }   else { 
+     outm->AddAxis(centID, 400, 0.0, 400.0);
+    }
+    //outm->AddAxis(yID, 32, -0.8, 0.8);
+  }
+  return kTRUE;
+}