ROOT logo
void AddRsnPairsKStar(AliAnalysisTaskSE *task,
                      Bool_t isMC,
                      Bool_t isMixing,
                      AliPID::EParticleType pType1,
                      Int_t listID1,
                      AliPID::EParticleType pType2,
                      Int_t listID2,
                      AliRsnCutSet *cutsEvent=0,
                      AliRsnCutSet *cutsPair=0,
                      TString suffix = "") {

   Printf("id1=%d id2=%d",listID1,listID2);

   // retrieve mass from PDG database
   Int_t         pdg  = 313;
   TDatabasePDG *db   = TDatabasePDG::Instance();
   TParticlePDG *part = db->GetParticle(pdg);
   Double_t mass = part->Mass();

   Bool_t valid;
   Int_t isRsnMini = AliAnalysisManager::GetGlobalInt("rsnUseMiniPackage",valid);
   if (isRsnMini) {
      AddPairOutputMiniKStar(task,isMC,isMixing,pType1,listID1,pType2,listID2,pdg,mass,cutsPair,suffix);
   } else {
      // this function is common and it is located in RsnConfig.C
      // as ouptup AddPairOutputKStar from this macro will be taken
      AddPair(task,isMC,isMixing,pType1,listID1,pType2,listID2,pdg,mass,cutsEvent,cutsPair,suffix);
   }
}
void AddPairOutputKStar(AliRsnLoopPair *pair)
{
   Bool_t valid;
   Int_t isFullOutput = AliAnalysisManager::GetGlobalInt("rsnOutputFull",valid);
   Int_t isPP = AliAnalysisManager::GetGlobalInt("rsnIsPP",valid);

   // axes
   AliRsnValuePair *axisIM = new AliRsnValuePair("IM", AliRsnValuePair::kInvMass);
   axisIM     ->SetBins(900, 0.6, 1.5);

   AliRsnValuePair *axisPt = new AliRsnValuePair("PT", AliRsnValuePair::kPt);
   axisPt     ->SetBins(120, 0.0, 12.0);

   AliRsnValuePair *axisEta = new AliRsnValuePair("ETA", AliRsnValuePair::kEta);
   axisEta    ->SetBins(400, -0.5, 0.5);

   AliRsnValueEvent *axisCentrality = 0;
   if (!isPP) axisCentrality = new AliRsnValueEvent("MULTI",AliRsnValueEvent::kCentralityV0);

   // output: 2D histogram of inv. mass vs. pt
   AliRsnListOutput *outPair = 0;
   if (!isFullOutput) {
      outPair = new AliRsnListOutput("pair", AliRsnListOutput::kHistoDefault);
      outPair->AddValue(axisIM);
   } else {
      outPair = new AliRsnListOutput("pair", AliRsnListOutput::kHistoSparse);
      outPair->AddValue(axisIM);
      outPair->AddValue(axisPt);
      outPair->AddValue(axisEta);
      if (axisCentrality) axisCentrality->SetBins(20,0,100);
   }
   // add outputs to loop
   pair->AddOutput(outPair);
}

void AddPairOutputMiniKStar(AliAnalysisTaskSE *task,Bool_t isMC,Bool_t isMixing, AliPID::EParticleType pType1,Int_t listID1, AliPID::EParticleType pType2,Int_t listID2, Int_t pdgMother,Double_t massMother, AliRsnCutSet *cutsPair=0,TString suffix = "") {

   Bool_t valid;
   Int_t isFullOutput = AliAnalysisManager::GetGlobalInt("rsnOutputFull",valid);
   Int_t useMixing = AliAnalysisManager::GetGlobalInt("rsnUseMixing",valid);
   Int_t isPP = AliAnalysisManager::GetGlobalInt("rsnIsPP",valid);

   AliRsnMiniAnalysisTask *taskRsnMini =  (AliRsnMiniAnalysisTask *)task;

   if (isPP) taskRsnMini->UseMultiplicity("QUALITY");
   else {
      taskRsnMini->UseCentrality("V0M");
      Int_t multID = taskRsnMini->CreateValue(AliRsnMiniValue::kMult, kFALSE);
      AliRsnMiniOutput *outMult = taskRsnMini->CreateOutput("eventMult", "HIST", "EVENT");
      outMult->AddAxis(multID, 100, 0.0, 100.0);
      Int_t paID = taskRsnMini->CreateValue(AliRsnMiniValue::kPlaneAngle, kFALSE);
      AliRsnMiniOutput *outPa = taskRsnMini->CreateOutput("planeAngle", "HIST", "EVENT");
      outPa->AddAxis(paID, 100, 0, TMath::Pi());
   }

   /* invariant mass   */ Int_t imID   = taskRsnMini->CreateValue(AliRsnMiniValue::kInvMass, kFALSE);
   /* IM resolution    */ Int_t resID  = taskRsnMini->CreateValue(AliRsnMiniValue::kInvMassRes, kTRUE);
   /* transv. momentum */ Int_t ptID   = taskRsnMini->CreateValue(AliRsnMiniValue::kPt, kFALSE);
   /* centrality       */ Int_t centID = taskRsnMini->CreateValue(AliRsnMiniValue::kMult, kFALSE);
   /* eta              */ Int_t etaID = taskRsnMini->CreateValue(AliRsnMiniValue::kEta, kFALSE);
   /* rapidity         */ Int_t yID = taskRsnMini->CreateValue(AliRsnMiniValue::kY, kFALSE);

   Bool_t useRapidity = kTRUE;

   Int_t nIM   = 90; Double_t minIM   = 0.6, maxIM =  1.5;
   Int_t nRes   = 200; Double_t minRes   = -0.02, maxRes =  0.02;
   Int_t nEta   = 400; Double_t minEta   = -0.5, maxEta =  0.5;
   Int_t nY   = 16; Double_t minY   = -0.8, maxY =  0.8;
   Int_t nPt   = 120; Double_t minPt   = 0.0, maxPt = 12.0;
   Int_t nCent = 100; Double_t minCent = 0.0, maxCent = 100.0;
   //
   // -- Create all needed outputs -----------------------------------------------------------------
   //

   Int_t iCutK = listID1;
   Int_t iCutPi = listID2;

   // common definitions
   TString outputType = "HIST";
   if (isFullOutput) outputType = "SPARSE";

   // use an array for more compact writing, which are different on mixing and charges
   // [0] = unlike
   // [1] = mixing
   // [2] = like ++
   // [3] = like --
//    const Int_t num = 12;
   Bool_t  use     [12] = { 1       ,  1       , useMixing, useMixing,  1      ,  1      ,  isMC   ,   isMC   ,  isMC   ,   isMC   ,  isMC    ,   isMC     };
   Bool_t  useIM   [12] = { 1       ,  1       ,  1       ,  1       ,  1      ,  1      ,  1      ,   1      ,  0      ,   0      ,  1       ,   1        };
   TString name    [12] = {"Unlike1", "Unlike2", "Mixing1", "Mixing2", "LikePP", "LikeMM", "Trues1",  "Trues2", "Res1"  ,  "Res2"  , "Mother1",  "Mother2" };
   TString comp    [12] = {"PAIR"   , "PAIR"   , "MIX"    , "MIX"    , "PAIR"  , "PAIR"  , "TRUE"  ,  "TRUE"  , "TRUE"  ,  "TRUE"  , "MOTHER" ,  "MOTHER"  };
   Char_t  charge1 [12] = {'+'      , '-'      , '+'      , '-'      , '+'     , '-'     , '+'     ,  '-'     , '+'     ,  '-'     , '+'      ,  '-'       };
   Char_t  charge2 [12] = {'-'      , '+'      , '-'      , '+'      , '+'     , '-'     , '-'     ,  '+'     , '-'     ,  '+'     , '-'      ,  '+'       };
   Int_t   cutID1  [12] = { iCutK   ,  iCutK   ,  iCutK   ,  iCutK   ,  iCutK  ,  iCutK  ,  iCutK  ,   iCutK  ,  iCutK  ,   iCutK  ,  iCutK  ,   iCutK     };
   Int_t   cutID2  [12] = { iCutPi  ,  iCutPi  ,  iCutPi  ,  iCutPi  ,  iCutPi ,  iCutPi ,  iCutPi ,   iCutPi ,  iCutPi ,   iCutPi ,  iCutPi ,   iCutPi    };

   for (Int_t i = 0; i < 12; i++) {
      if (!use[i]) continue;
      // create output
      AliRsnMiniOutput *out = taskRsnMini->CreateOutput(Form("%s_%s", suffix.Data(), name[i].Data()), outputType.Data(), comp[i].Data());
      // selection settings
      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(pdgMother);
      out->SetMotherMass(massMother);
      // pair cuts
      if (cutsPair) out->SetPairCuts(cutsPair);
      // axis X: invmass (or resolution)
      if (useIM[i])
         out->AddAxis(imID, nIM, minIM, maxIM);
      else
         out->AddAxis(resID, nRes, minRes, maxRes);

      if (isFullOutput) {
         // axis Y: transverse momentum
         out->AddAxis(ptID, nPt, minPt, maxPt);
         if (useRapidity) out->AddAxis(yID, nY, minY, maxY);
         else  out->AddAxis(etaID, nEta, minEta, maxEta);
         // axis Z: centrality
         if (!isPP) out->AddAxis(centID, nCent, minCent, maxCent);
      }
   }

   // -- Create output for MC generated ------------------------------------------------------------
   //

   if (isMC) {
      // create ouput
      AliRsnMiniOutput *outMC = taskRsnMini->CreateOutput(Form("kstar_MCGen1%s", suffix.Data()), outputType.Data(), "MOTHER");
      // selection settings
      outMC->SetDaughter(0, AliRsnDaughter::kPion);
      outMC->SetDaughter(1, AliRsnDaughter::kKaon);
      outMC->SetMotherPDG(313);
      outMC->SetMotherMass(massMother);
      // pair cuts
      if (cutsPair) outMC->SetPairCuts(cutsPair);
      // axis X: invmass
      outMC->AddAxis(imID, nIM, minIM, maxIM);
      if (isFullOutput) {
         // axis Y: transverse momentum
         outMC->AddAxis(ptID, nPt, minPt, maxPt);
         if (useRapidity) outMC->AddAxis(yID, nY, minY, maxY);
         else  outMC->AddAxis(etaID, nEta, minEta, maxEta);
         // axis Z: centrality
         if (!isPP) outMC->AddAxis(centID, nCent, minCent, maxCent);
      }
   }



   if (isMC) {
      // create ouput
      AliRsnMiniOutput *outMC1 = taskRsnMini->CreateOutput(Form("phi_MCGen2%s", suffix.Data()), outputType.Data(), "MOTHER");
      // selection settings
      outMC1->SetDaughter(0, AliRsnDaughter::kKaon);
      outMC1->SetDaughter(1, AliRsnDaughter::kPion);
      outMC1->SetMotherPDG(-313);
      outMC1->SetMotherMass(massMother);
      // pair cuts
      if (cutsPair) outMC1->SetPairCuts(cutsPair);
      // axis X: invmass
      outMC1->AddAxis(imID, nIM, minIM, maxIM);
      if (isFullOutput) {
         // axis Y: transverse momentum
         outMC1->AddAxis(ptID, nPt, minPt, maxPt);
         if (useRapidity) outMC1->AddAxis(yID, nY, minY, maxY);
         else  outMC1->AddAxis(etaID, nEta, minEta, maxEta);
         // axis Z: centrality
         if (!isPP) outMC1->AddAxis(centID, nCent, minCent, maxCent);
      }
   }


}

 AddRsnPairsKStar.C:1
 AddRsnPairsKStar.C:2
 AddRsnPairsKStar.C:3
 AddRsnPairsKStar.C:4
 AddRsnPairsKStar.C:5
 AddRsnPairsKStar.C:6
 AddRsnPairsKStar.C:7
 AddRsnPairsKStar.C:8
 AddRsnPairsKStar.C:9
 AddRsnPairsKStar.C:10
 AddRsnPairsKStar.C:11
 AddRsnPairsKStar.C:12
 AddRsnPairsKStar.C:13
 AddRsnPairsKStar.C:14
 AddRsnPairsKStar.C:15
 AddRsnPairsKStar.C:16
 AddRsnPairsKStar.C:17
 AddRsnPairsKStar.C:18
 AddRsnPairsKStar.C:19
 AddRsnPairsKStar.C:20
 AddRsnPairsKStar.C:21
 AddRsnPairsKStar.C:22
 AddRsnPairsKStar.C:23
 AddRsnPairsKStar.C:24
 AddRsnPairsKStar.C:25
 AddRsnPairsKStar.C:26
 AddRsnPairsKStar.C:27
 AddRsnPairsKStar.C:28
 AddRsnPairsKStar.C:29
 AddRsnPairsKStar.C:30
 AddRsnPairsKStar.C:31
 AddRsnPairsKStar.C:32
 AddRsnPairsKStar.C:33
 AddRsnPairsKStar.C:34
 AddRsnPairsKStar.C:35
 AddRsnPairsKStar.C:36
 AddRsnPairsKStar.C:37
 AddRsnPairsKStar.C:38
 AddRsnPairsKStar.C:39
 AddRsnPairsKStar.C:40
 AddRsnPairsKStar.C:41
 AddRsnPairsKStar.C:42
 AddRsnPairsKStar.C:43
 AddRsnPairsKStar.C:44
 AddRsnPairsKStar.C:45
 AddRsnPairsKStar.C:46
 AddRsnPairsKStar.C:47
 AddRsnPairsKStar.C:48
 AddRsnPairsKStar.C:49
 AddRsnPairsKStar.C:50
 AddRsnPairsKStar.C:51
 AddRsnPairsKStar.C:52
 AddRsnPairsKStar.C:53
 AddRsnPairsKStar.C:54
 AddRsnPairsKStar.C:55
 AddRsnPairsKStar.C:56
 AddRsnPairsKStar.C:57
 AddRsnPairsKStar.C:58
 AddRsnPairsKStar.C:59
 AddRsnPairsKStar.C:60
 AddRsnPairsKStar.C:61
 AddRsnPairsKStar.C:62
 AddRsnPairsKStar.C:63
 AddRsnPairsKStar.C:64
 AddRsnPairsKStar.C:65
 AddRsnPairsKStar.C:66
 AddRsnPairsKStar.C:67
 AddRsnPairsKStar.C:68
 AddRsnPairsKStar.C:69
 AddRsnPairsKStar.C:70
 AddRsnPairsKStar.C:71
 AddRsnPairsKStar.C:72
 AddRsnPairsKStar.C:73
 AddRsnPairsKStar.C:74
 AddRsnPairsKStar.C:75
 AddRsnPairsKStar.C:76
 AddRsnPairsKStar.C:77
 AddRsnPairsKStar.C:78
 AddRsnPairsKStar.C:79
 AddRsnPairsKStar.C:80
 AddRsnPairsKStar.C:81
 AddRsnPairsKStar.C:82
 AddRsnPairsKStar.C:83
 AddRsnPairsKStar.C:84
 AddRsnPairsKStar.C:85
 AddRsnPairsKStar.C:86
 AddRsnPairsKStar.C:87
 AddRsnPairsKStar.C:88
 AddRsnPairsKStar.C:89
 AddRsnPairsKStar.C:90
 AddRsnPairsKStar.C:91
 AddRsnPairsKStar.C:92
 AddRsnPairsKStar.C:93
 AddRsnPairsKStar.C:94
 AddRsnPairsKStar.C:95
 AddRsnPairsKStar.C:96
 AddRsnPairsKStar.C:97
 AddRsnPairsKStar.C:98
 AddRsnPairsKStar.C:99
 AddRsnPairsKStar.C:100
 AddRsnPairsKStar.C:101
 AddRsnPairsKStar.C:102
 AddRsnPairsKStar.C:103
 AddRsnPairsKStar.C:104
 AddRsnPairsKStar.C:105
 AddRsnPairsKStar.C:106
 AddRsnPairsKStar.C:107
 AddRsnPairsKStar.C:108
 AddRsnPairsKStar.C:109
 AddRsnPairsKStar.C:110
 AddRsnPairsKStar.C:111
 AddRsnPairsKStar.C:112
 AddRsnPairsKStar.C:113
 AddRsnPairsKStar.C:114
 AddRsnPairsKStar.C:115
 AddRsnPairsKStar.C:116
 AddRsnPairsKStar.C:117
 AddRsnPairsKStar.C:118
 AddRsnPairsKStar.C:119
 AddRsnPairsKStar.C:120
 AddRsnPairsKStar.C:121
 AddRsnPairsKStar.C:122
 AddRsnPairsKStar.C:123
 AddRsnPairsKStar.C:124
 AddRsnPairsKStar.C:125
 AddRsnPairsKStar.C:126
 AddRsnPairsKStar.C:127
 AddRsnPairsKStar.C:128
 AddRsnPairsKStar.C:129
 AddRsnPairsKStar.C:130
 AddRsnPairsKStar.C:131
 AddRsnPairsKStar.C:132
 AddRsnPairsKStar.C:133
 AddRsnPairsKStar.C:134
 AddRsnPairsKStar.C:135
 AddRsnPairsKStar.C:136
 AddRsnPairsKStar.C:137
 AddRsnPairsKStar.C:138
 AddRsnPairsKStar.C:139
 AddRsnPairsKStar.C:140
 AddRsnPairsKStar.C:141
 AddRsnPairsKStar.C:142
 AddRsnPairsKStar.C:143
 AddRsnPairsKStar.C:144
 AddRsnPairsKStar.C:145
 AddRsnPairsKStar.C:146
 AddRsnPairsKStar.C:147
 AddRsnPairsKStar.C:148
 AddRsnPairsKStar.C:149
 AddRsnPairsKStar.C:150
 AddRsnPairsKStar.C:151
 AddRsnPairsKStar.C:152
 AddRsnPairsKStar.C:153
 AddRsnPairsKStar.C:154
 AddRsnPairsKStar.C:155
 AddRsnPairsKStar.C:156
 AddRsnPairsKStar.C:157
 AddRsnPairsKStar.C:158
 AddRsnPairsKStar.C:159
 AddRsnPairsKStar.C:160
 AddRsnPairsKStar.C:161
 AddRsnPairsKStar.C:162
 AddRsnPairsKStar.C:163
 AddRsnPairsKStar.C:164
 AddRsnPairsKStar.C:165
 AddRsnPairsKStar.C:166
 AddRsnPairsKStar.C:167
 AddRsnPairsKStar.C:168
 AddRsnPairsKStar.C:169
 AddRsnPairsKStar.C:170
 AddRsnPairsKStar.C:171
 AddRsnPairsKStar.C:172
 AddRsnPairsKStar.C:173
 AddRsnPairsKStar.C:174
 AddRsnPairsKStar.C:175
 AddRsnPairsKStar.C:176
 AddRsnPairsKStar.C:177
 AddRsnPairsKStar.C:178
 AddRsnPairsKStar.C:179
 AddRsnPairsKStar.C:180
 AddRsnPairsKStar.C:181
 AddRsnPairsKStar.C:182
 AddRsnPairsKStar.C:183
 AddRsnPairsKStar.C:184
 AddRsnPairsKStar.C:185
 AddRsnPairsKStar.C:186
 AddRsnPairsKStar.C:187
 AddRsnPairsKStar.C:188
 AddRsnPairsKStar.C:189
 AddRsnPairsKStar.C:190
 AddRsnPairsKStar.C:191
 AddRsnPairsKStar.C:192
 AddRsnPairsKStar.C:193
 AddRsnPairsKStar.C:194
 AddRsnPairsKStar.C:195
 AddRsnPairsKStar.C:196
 AddRsnPairsKStar.C:197
 AddRsnPairsKStar.C:198
 AddRsnPairsKStar.C:199
 AddRsnPairsKStar.C:200
 AddRsnPairsKStar.C:201
 AddRsnPairsKStar.C:202
 AddRsnPairsKStar.C:203
 AddRsnPairsKStar.C:204
 AddRsnPairsKStar.C:205
 AddRsnPairsKStar.C:206
 AddRsnPairsKStar.C:207
 AddRsnPairsKStar.C:208
 AddRsnPairsKStar.C:209