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 ConfigPhi
(  
   AliRsnMiniAnalysisTask *task, 
   Bool_t                  isMC, 
   const char             *suffix,
   AliRsnCutSet           *cutsPair
)
{
   // manage suffix
   if (strlen(suffix) > 0) suffix = Form("_%s", suffix);
   
   // 
   // -- Define track cuts -------------------------------------------------------------------------
   //
   
   // integrated kaon cut
   AliRsnCutKaonForPhi2010PP *cutStd = new AliRsnCutKaonForPhi2010PP("cutStdPP");
   // cut set
   AliRsnCutSet *cutSetStd = new AliRsnCutSet("kaonForPhi", AliRsnTarget::kDaughter);
   cutSetStd->AddCut(cutStd);
   cutSetStd->SetCutScheme(cutStd->GetName());
   // add to task
   Int_t icut = task->AddTrackCuts(cutSetStd);
   
   //
   // -- 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      ,  1      ,  1      ,  1      ,  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] = {"HIST"  , "HIST"  , "HIST"  , "HIST"  , "HIST"  , "HIST"    };
   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[i]) 
         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);
   }
   
   return kTRUE;
}
 ConfigPhi.C:1
 ConfigPhi.C:2
 ConfigPhi.C:3
 ConfigPhi.C:4
 ConfigPhi.C:5
 ConfigPhi.C:6
 ConfigPhi.C:7
 ConfigPhi.C:8
 ConfigPhi.C:9
 ConfigPhi.C:10
 ConfigPhi.C:11
 ConfigPhi.C:12
 ConfigPhi.C:13
 ConfigPhi.C:14
 ConfigPhi.C:15
 ConfigPhi.C:16
 ConfigPhi.C:17
 ConfigPhi.C:18
 ConfigPhi.C:19
 ConfigPhi.C:20
 ConfigPhi.C:21
 ConfigPhi.C:22
 ConfigPhi.C:23
 ConfigPhi.C:24
 ConfigPhi.C:25
 ConfigPhi.C:26
 ConfigPhi.C:27
 ConfigPhi.C:28
 ConfigPhi.C:29
 ConfigPhi.C:30
 ConfigPhi.C:31
 ConfigPhi.C:32
 ConfigPhi.C:33
 ConfigPhi.C:34
 ConfigPhi.C:35
 ConfigPhi.C:36
 ConfigPhi.C:37
 ConfigPhi.C:38
 ConfigPhi.C:39
 ConfigPhi.C:40
 ConfigPhi.C:41
 ConfigPhi.C:42
 ConfigPhi.C:43
 ConfigPhi.C:44
 ConfigPhi.C:45
 ConfigPhi.C:46
 ConfigPhi.C:47
 ConfigPhi.C:48
 ConfigPhi.C:49
 ConfigPhi.C:50
 ConfigPhi.C:51
 ConfigPhi.C:52
 ConfigPhi.C:53
 ConfigPhi.C:54
 ConfigPhi.C:55
 ConfigPhi.C:56
 ConfigPhi.C:57
 ConfigPhi.C:58
 ConfigPhi.C:59
 ConfigPhi.C:60
 ConfigPhi.C:61
 ConfigPhi.C:62
 ConfigPhi.C:63
 ConfigPhi.C:64
 ConfigPhi.C:65
 ConfigPhi.C:66
 ConfigPhi.C:67
 ConfigPhi.C:68
 ConfigPhi.C:69
 ConfigPhi.C:70
 ConfigPhi.C:71
 ConfigPhi.C:72
 ConfigPhi.C:73
 ConfigPhi.C:74
 ConfigPhi.C:75
 ConfigPhi.C:76
 ConfigPhi.C:77
 ConfigPhi.C:78
 ConfigPhi.C:79
 ConfigPhi.C:80
 ConfigPhi.C:81
 ConfigPhi.C:82
 ConfigPhi.C:83
 ConfigPhi.C:84
 ConfigPhi.C:85
 ConfigPhi.C:86
 ConfigPhi.C:87
 ConfigPhi.C:88