]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
Adding: 1) switch for usage of 3 different multiplicity estimators (by default Ntrack...
authorzconesa <zconesa@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 30 May 2013 11:34:54 +0000 (11:34 +0000)
committerzconesa <zconesa@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 30 May 2013 11:34:54 +0000 (11:34 +0000)
PWGHF/vertexingHF/AliCFTaskVertexingHF.cxx
PWGHF/vertexingHF/AliCFTaskVertexingHF.h
PWGHF/vertexingHF/macros/AddTaskCFVertexingHF.C

index ff6bb6c479989ab5c220bde91c52be2896a9f3c3..82d7311f74bdf842734c7cc09a758edc6fa1abf3 100644 (file)
@@ -122,7 +122,9 @@ AliCFTaskVertexingHF::AliCFTaskVertexingHF() :
   fLctoV0bachelorOption(1),
   fGenLctoV0bachelorOption(0),
   fUseSelectionBit(kTRUE),
-  fPDGcode(0)
+  fPDGcode(0),
+  fMultiplicityEstimator(kNtrk10),
+  fIsPPData(kFALSE)
 {
   //
   //Default ctor
@@ -172,7 +174,9 @@ AliCFTaskVertexingHF::AliCFTaskVertexingHF(const Char_t* name, AliRDHFCuts* cuts
   fLctoV0bachelorOption(1),
   fGenLctoV0bachelorOption(0),
   fUseSelectionBit(kTRUE),
-  fPDGcode(0)
+  fPDGcode(0),
+  fMultiplicityEstimator(kNtrk10),
+  fIsPPData(kFALSE)
 {
   //
   // Constructor. Initialization of Inputs and Outputs
@@ -251,7 +255,9 @@ AliCFTaskVertexingHF::AliCFTaskVertexingHF(const AliCFTaskVertexingHF& c) :
   fLctoV0bachelorOption(c.fLctoV0bachelorOption),
   fGenLctoV0bachelorOption(c.fGenLctoV0bachelorOption),
   fUseSelectionBit(c.fUseSelectionBit),
-  fPDGcode(c.fPDGcode)
+  fPDGcode(c.fPDGcode),
+  fMultiplicityEstimator(c.fMultiplicityEstimator),
+  fIsPPData(c.fIsPPData)
 {
   //
   // Copy Constructor
@@ -660,12 +666,26 @@ void AliCFTaskVertexingHF::UserExec(Option_t *)
     fCuts->SetMaxCentrality(100.);
   }
        
-  Float_t centValue = fCuts->GetCentrality(aodEvent);
+  Float_t centValue = 0.;
+  if(!fIsPPData) centValue = fCuts->GetCentrality(aodEvent);
   cfVtxHF->SetCentralityValue(centValue);  
        
   // number of tracklets - multiplicity estimator
-  Double_t multiplicity = (Double_t)(AliVertexingHFUtils::GetNumberOfTrackletsInEtaRange(aodEvent,-1.,1.)); // casted to double because the CF is filled with doubles
+  Double_t countTr10 = (Double_t)(AliVertexingHFUtils::GetNumberOfTrackletsInEtaRange(aodEvent,-1.,1.)); // casted to double because the CF is filled with doubles
+
+  Double_t countTr16 = (Double_t)(AliVertexingHFUtils::GetNumberOfTrackletsInEtaRange(aodEvent,-1.6,1.6));
+  Double_t vzeroMult=0;
+  AliAODVZERO *vzeroAOD = (AliAODVZERO*)aodEvent->GetVZEROData();
+  if(vzeroAOD) vzeroMult = vzeroAOD->GetMTotV0A() +  vzeroAOD->GetMTotV0C();
+
+  Double_t multiplicity = countTr10;
+  if(fMultiplicityEstimator==kNtrk10to16) { multiplicity = countTr16 - countTr10; }
+  if(fMultiplicityEstimator==kVZERO) { multiplicity = vzeroMult; }
+
+
   cfVtxHF->SetMultiplicity(multiplicity);
+
+  //  printf("Multiplicity estimator %d, value %2.2f\n",fMultiplicityEstimator,multiplicity);
        
   for (Int_t iPart=0; iPart<mcArray->GetEntriesFast(); iPart++) { 
     AliAODMCParticle* mcPart = dynamic_cast<AliAODMCParticle*>(mcArray->At(iPart));
@@ -696,7 +716,7 @@ void AliCFTaskVertexingHF::UserExec(Option_t *)
       continue;
     }
     else{
-      AliInfo(Form("Check on the family OK!!! (decaychannel = %d)",fDecayChannel));
+      AliDebug(2,Form("Check on the family OK!!! (decaychannel = %d)",fDecayChannel));
     }
                
     //Fill the MC container
index db62deec2471b58e93348a66748c66ba42c9dfe3..821a2659eb882f0bfd8589c9fa2ceef4b3d27be4 100644 (file)
@@ -74,6 +74,8 @@ public:
           kKstar = 3,  // Lc --> K* + pi
           kDelta = 4   // Lc --> Delta + K
         };
+
+       enum { kNtrk10=0, kNtrk10to16=1, kVZERO=2 }; // multiplicity estimators
        
        AliCFTaskVertexingHF();
        AliCFTaskVertexingHF(const Char_t* name, AliRDHFCuts* cuts, TF1* func = 0x0);
@@ -123,6 +125,10 @@ public:
        }
        void CreateMeasuredNchHisto();
        Double_t GetNchWeight(Int_t nch);
+       void SetMultiplicityEstimator(Int_t value){ fMultiplicityEstimator=value; }
+       Int_t GetMultiplicityEstimator(){ return fMultiplicityEstimator; }
+       void SetIsPPData(Bool_t flag){ fIsPPData = flag; }
+
 
        void   SetDselection(UShort_t originDselection) {fOriginDselection=originDselection;}
        UShort_t GetDselection (){return fOriginDselection;}
@@ -221,7 +227,10 @@ protected:
        Bool_t fUseSelectionBit;     // flag to use selection bit
        UInt_t fPDGcode; // PDG code
 
-       ClassDef(AliCFTaskVertexingHF,15); // class for HF corrections as a function of many variables
+       Int_t fMultiplicityEstimator; // Definition of the multiplicity estimator: kNtrk10=0, kNtrk10to16=1, kVZERO=2
+       Bool_t fIsPPData; // flag for pp data (not checking centrality)
+
+       ClassDef(AliCFTaskVertexingHF,16); // class for HF corrections as a function of many variables
 };
 
 #endif
index 765135c4e77d3e0fe60217584de092b0098e7d3d..7013db6b833aab07af7f8389ea4b76e4e69f5ed0 100644 (file)
@@ -42,12 +42,14 @@ const Float_t multmin_0_20 = 0;
 const Float_t multmax_0_20 = 20;
 const Float_t multmin_20_50 = 20;
 const Float_t multmax_20_50 = 50;
-const Float_t multmin_50_102 = 50;
-const Float_t multmax_50_102 = 102;
+const Float_t multmin_50_80 = 50;
+const Float_t multmax_50_80 = 80;
+const Float_t multmin_80_100 = 80;
+const Float_t multmax_80_100 = 100;
 
 //----------------------------------------------------
 
-AliCFTaskVertexingHF *AddTaskCFVertexingHF(const char* cutFile = "./D0toKpiCuts.root", TString cutObjectName="D0toKpiCutsStandard", TString suffix="", Int_t configuration = AliCFTaskVertexingHF::kSnail, Bool_t isKeepDfromB=kFALSE, Bool_t isKeepDfromBOnly=kFALSE, Int_t pdgCode = 421, Char_t isSign = 2, Bool_t useWeight=kFALSE, Bool_t useFlatPtWeight=kFALSE, Bool_t useZWeight=kFALSE, Bool_t useNchWeight=kFALSE, Bool_t isFinePtBin=kFALSE)
+AliCFTaskVertexingHF *AddTaskCFVertexingHF(const char* cutFile = "./D0toKpiCuts.root", TString cutObjectName="D0toKpiCutsStandard", TString suffix="", Int_t configuration = AliCFTaskVertexingHF::kSnail, Bool_t isKeepDfromB=kFALSE, Bool_t isKeepDfromBOnly=kFALSE, Int_t pdgCode = 421, Char_t isSign = 2, Bool_t useWeight=kFALSE, Bool_t useFlatPtWeight=kFALSE, Bool_t useZWeight=kFALSE, Bool_t useNchWeight=kFALSE, Bool_t isFinePtBin=kFALSE, Int_t multiplicityEstimator = AliCFTaskVertexingHF::kNtrk10, Bool_t isPPData=kFALSE)
 {
        printf("Adding CF task using cuts from file %s\n",cutFile);
        if (configuration == AliCFTaskVertexingHF::kSnail){
@@ -136,7 +138,8 @@ AliCFTaskVertexingHF *AddTaskCFVertexingHF(const char* cutFile = "./D0toKpiCuts.
        const Int_t nbinmult = 48;  //bins in multiplicity (total number)
        const Int_t nbinmult_0_20 = 20; //bins in multiplicity between 0 and 20
        const Int_t nbinmult_20_50 = 15; //bins in multiplicity between 20 and 50
-       const Int_t nbinmult_50_102 = 13; //bins in multiplicity between 50 and 102
+       const Int_t nbinmult_50_80 = 10; //bins in multiplicity between 50 and 102
+       const Int_t nbinmult_80_100 = 4; //bins in multiplicity between 50 and 102
 
        //the sensitive variables, their indices
 
@@ -347,10 +350,19 @@ AliCFTaskVertexingHF *AddTaskCFVertexingHF(const char* cutFile = "./D0toKpiCuts.
                Error("AliCFHeavyFlavourTaskMultiVarMultiStep","Calculated bin lim for mult - 1st range - differs from expected!\n");
        }
        for(Int_t i=0; i<=nbinmult_20_50; i++) binLimmult[i+nbinmult_0_20]=(Double_t)multmin_20_50 + (multmax_20_50-multmin_20_50)/nbinmult_20_50*(Double_t)i ; 
-       if (binLimmult[nbinmult_0_20+nbinmult_20_50] != multmin_50_102)  {
+       if (binLimmult[nbinmult_0_20+nbinmult_20_50] != multmin_50_80)  {
                Error("AliCFHeavyFlavourTaskMultiVarMultiStep","Calculated bin lim for mult - 2nd range - differs from expected!\n");
        }
-       for(Int_t i=0; i<=nbinmult_50_102; i++) binLimmult[i+nbinmult_0_20+nbinmult_20_50]=(Double_t)multmin_50_102 + (multmax_50_102-multmin_50_102)/nbinmult_50_102*(Double_t)i ; 
+       for(Int_t i=0; i<=nbinmult_50_80; i++) binLimmult[i+nbinmult_0_20+nbinmult_20_50]=(Double_t)multmin_50_80 + (multmax_50_80-multmin_50_80)/nbinmult_50_80*(Double_t)i ; 
+       if (binLimmult[nbinmult_0_20+nbinmult_20_50+nbinmult_50_80] != multmin_80_100)  {
+               Error("AliCFHeavyFlavourTaskMultiVarMultiStep","Calculated bin lim for mult - 2nd range - differs from expected!\n");
+       }
+       for(Int_t i=0; i<=nbinmult_80_100; i++) binLimmult[i+nbinmult_0_20+nbinmult_20_50+nbinmult_50_80]=(Double_t)multmin_80_100 + (multmax_80_100-multmin_80_100)/nbinmult_80_100*(Double_t)i ; 
+
+       if(multiplicityEstimator==AliCFTaskVertexingHF::kVZERO) {
+         Int_t items = nbinmult_0_20+nbinmult_20_50+nbinmult_50_80+nbinmult_80_100;
+         for(Int_t i=0; i<=items; i++) binLimmult[i]*= 68./12.;
+       }
 
        //one "container" for MC
        TString nameContainer="";
@@ -570,6 +582,8 @@ AliCFTaskVertexingHF *AddTaskCFVertexingHF(const char* cutFile = "./D0toKpiCuts.
        task->SetFakeSelection(0);
        task->SetRejectCandidateIfNotFromQuark(kTRUE); // put to false if you want to keep HIJING D0!!
        task->SetUseMCVertex(kFALSE); // put to true if you want to do studies on pp
+       task->SetMultiplicityEstimator(multiplicityEstimator);
+       task->SetIsPPData(isPPData);
 
        if (isKeepDfromB && !isKeepDfromBOnly) task->SetDselection(2);
        if (isKeepDfromB && isKeepDfromBOnly) task->SetDselection(1);