ROOT logo
//
// *** Configuration script for phi->KK analysis with 2010 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 ConfigPhiPbPbTOF
(  
   AliRsnMiniAnalysisTask *task,
   Bool_t                  isMC,
   Bool_t                  isESD,
   const char             *suffix,
   AliRsnCutSet           *cutsPair
)
{
   // manage suffix
   if (strlen(suffix) > 0) suffix = Form("_%s", suffix);
   
   // 
   // -- Define track cuts -------------------------------------------------------------------------
   //
   
   // BB parameterization depends on data sample (MC, data)
   Double_t bbPar[5];
   if (isMC) {
      bbPar[0] = 2.15898 / 50.0;
      bbPar[1] = 1.75295E1;
      bbPar[2] = 3.40030E-9;
      bbPar[3] = 1.96178;
      bbPar[4] = 3.91720;
   } else {
      bbPar[0] = 1.41543 / 50.0;
      bbPar[1] = 2.63394E1;
      bbPar[2] = 5.0411E-11;
      bbPar[3] = 2.12543;
      bbPar[4] = 4.88663;
   }
   
   // standard kaon cut
   AliRsnCutKaonForPhi2010 *cut = new AliRsnCutKaonForPhi2010(Form("cut%s", suffix), 3.0, 3.0, 0.8);
   
   // setup (set manually the TPC PID)
   cut->SetMode(AliRsnCutKaonForPhi2010::kOnlyTOF);
   
   // cut set
   AliRsnCutSet *cutSet = new AliRsnCutSet(Form("set%s", suffix), AliRsnTarget::kDaughter);
   cutSet->AddCut(cut);
   cutSet->SetCutScheme(cut->GetName());
   
   // add to task
   Int_t icut = task->AddTrackCuts(cutSet);
   ::Info("Config", "Cut ID = %d", icut);
   
   //
   // -- 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);
   
   //
   // -- 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     [6] = { 1      ,  0      ,  0      ,  0      ,  isMC   ,  isMC     };
   Bool_t  useIM   [6] = { 1      ,  1      ,  1      ,  1      ,  1      ,  0        };
   TString name    [6] = {"Unlike", "Mixing", "LikePP", "LikeMM", "Trues" , "Res"     };
   TString comp    [6] = {"PAIR"  , "MIX"   , "PAIR"  , "PAIR"  , "TRUE"  , "TRUE"    };
   TString output  [6] = {"SPARSE", "SPARSE", "SPARSE", "SPARSE", "SPARSE", "SPARSE"  };
   Char_t  charge1 [6] = {'+'     , '+'     , '+'     , '-'     , '+'     , '+'       };
   Char_t  charge2 [6] = {'-'     , '-'     , '+'     , '-'     , '-'     , '-'       };
   Int_t   cutID   [6] = { icut   ,  icut   ,  icut   ,  icut   ,  icut   ,  icut     };
   
   for (Int_t i = 0; i < 6; i++) {
      if (!use[i]) continue;
      // create output
      AliRsnMiniOutput *out = task->CreateOutput(Form("phi_%s%s", name[i].Data(), suffix), output[i].Data(), comp[i].Data());
      // selection settings
      out->SetCutID(0, cutID[i]);
      out->SetCutID(1, cutID[i]);
      out->SetDaughter(0, AliRsnDaughter::kKaon);
      out->SetDaughter(1, AliRsnDaughter::kKaon);
      out->SetCharge(0, charge1[i]);
      out->SetCharge(1, charge2[i]);
      out->SetMotherPDG(333);
      out->SetMotherMass(1.019455);
      // pair cuts
      out->SetPairCuts(cutsPair);
      // axis X: invmass (or resolution)
      if (useIM) 
         out->AddAxis(imID, 500, 0.9,  1.4);
      else
         out->AddAxis(resID, 200, -0.02, 0.02);
      // axis Y: transverse momentum
      out->AddAxis(ptID, 100, 0.0, 10.0);
      // axis Z: centrality 
      out->AddAxis(centID, 100, 0.0, 100.0);
   }
   
   return kTRUE;
}
 ConfigPhiPbPbTOF.C:1
 ConfigPhiPbPbTOF.C:2
 ConfigPhiPbPbTOF.C:3
 ConfigPhiPbPbTOF.C:4
 ConfigPhiPbPbTOF.C:5
 ConfigPhiPbPbTOF.C:6
 ConfigPhiPbPbTOF.C:7
 ConfigPhiPbPbTOF.C:8
 ConfigPhiPbPbTOF.C:9
 ConfigPhiPbPbTOF.C:10
 ConfigPhiPbPbTOF.C:11
 ConfigPhiPbPbTOF.C:12
 ConfigPhiPbPbTOF.C:13
 ConfigPhiPbPbTOF.C:14
 ConfigPhiPbPbTOF.C:15
 ConfigPhiPbPbTOF.C:16
 ConfigPhiPbPbTOF.C:17
 ConfigPhiPbPbTOF.C:18
 ConfigPhiPbPbTOF.C:19
 ConfigPhiPbPbTOF.C:20
 ConfigPhiPbPbTOF.C:21
 ConfigPhiPbPbTOF.C:22
 ConfigPhiPbPbTOF.C:23
 ConfigPhiPbPbTOF.C:24
 ConfigPhiPbPbTOF.C:25
 ConfigPhiPbPbTOF.C:26
 ConfigPhiPbPbTOF.C:27
 ConfigPhiPbPbTOF.C:28
 ConfigPhiPbPbTOF.C:29
 ConfigPhiPbPbTOF.C:30
 ConfigPhiPbPbTOF.C:31
 ConfigPhiPbPbTOF.C:32
 ConfigPhiPbPbTOF.C:33
 ConfigPhiPbPbTOF.C:34
 ConfigPhiPbPbTOF.C:35
 ConfigPhiPbPbTOF.C:36
 ConfigPhiPbPbTOF.C:37
 ConfigPhiPbPbTOF.C:38
 ConfigPhiPbPbTOF.C:39
 ConfigPhiPbPbTOF.C:40
 ConfigPhiPbPbTOF.C:41
 ConfigPhiPbPbTOF.C:42
 ConfigPhiPbPbTOF.C:43
 ConfigPhiPbPbTOF.C:44
 ConfigPhiPbPbTOF.C:45
 ConfigPhiPbPbTOF.C:46
 ConfigPhiPbPbTOF.C:47
 ConfigPhiPbPbTOF.C:48
 ConfigPhiPbPbTOF.C:49
 ConfigPhiPbPbTOF.C:50
 ConfigPhiPbPbTOF.C:51
 ConfigPhiPbPbTOF.C:52
 ConfigPhiPbPbTOF.C:53
 ConfigPhiPbPbTOF.C:54
 ConfigPhiPbPbTOF.C:55
 ConfigPhiPbPbTOF.C:56
 ConfigPhiPbPbTOF.C:57
 ConfigPhiPbPbTOF.C:58
 ConfigPhiPbPbTOF.C:59
 ConfigPhiPbPbTOF.C:60
 ConfigPhiPbPbTOF.C:61
 ConfigPhiPbPbTOF.C:62
 ConfigPhiPbPbTOF.C:63
 ConfigPhiPbPbTOF.C:64
 ConfigPhiPbPbTOF.C:65
 ConfigPhiPbPbTOF.C:66
 ConfigPhiPbPbTOF.C:67
 ConfigPhiPbPbTOF.C:68
 ConfigPhiPbPbTOF.C:69
 ConfigPhiPbPbTOF.C:70
 ConfigPhiPbPbTOF.C:71
 ConfigPhiPbPbTOF.C:72
 ConfigPhiPbPbTOF.C:73
 ConfigPhiPbPbTOF.C:74
 ConfigPhiPbPbTOF.C:75
 ConfigPhiPbPbTOF.C:76
 ConfigPhiPbPbTOF.C:77
 ConfigPhiPbPbTOF.C:78
 ConfigPhiPbPbTOF.C:79
 ConfigPhiPbPbTOF.C:80
 ConfigPhiPbPbTOF.C:81
 ConfigPhiPbPbTOF.C:82
 ConfigPhiPbPbTOF.C:83
 ConfigPhiPbPbTOF.C:84
 ConfigPhiPbPbTOF.C:85
 ConfigPhiPbPbTOF.C:86
 ConfigPhiPbPbTOF.C:87
 ConfigPhiPbPbTOF.C:88
 ConfigPhiPbPbTOF.C:89
 ConfigPhiPbPbTOF.C:90
 ConfigPhiPbPbTOF.C:91
 ConfigPhiPbPbTOF.C:92
 ConfigPhiPbPbTOF.C:93
 ConfigPhiPbPbTOF.C:94
 ConfigPhiPbPbTOF.C:95
 ConfigPhiPbPbTOF.C:96
 ConfigPhiPbPbTOF.C:97
 ConfigPhiPbPbTOF.C:98
 ConfigPhiPbPbTOF.C:99
 ConfigPhiPbPbTOF.C:100
 ConfigPhiPbPbTOF.C:101
 ConfigPhiPbPbTOF.C:102
 ConfigPhiPbPbTOF.C:103
 ConfigPhiPbPbTOF.C:104
 ConfigPhiPbPbTOF.C:105
 ConfigPhiPbPbTOF.C:106
 ConfigPhiPbPbTOF.C:107
 ConfigPhiPbPbTOF.C:108
 ConfigPhiPbPbTOF.C:109
 ConfigPhiPbPbTOF.C:110
 ConfigPhiPbPbTOF.C:111
 ConfigPhiPbPbTOF.C:112
 ConfigPhiPbPbTOF.C:113