fLctoV0bachelorOption(1),
fGenLctoV0bachelorOption(0),
fUseSelectionBit(kTRUE),
- fPDGcode(0)
+ fPDGcode(0),
+ fMultiplicityEstimator(kNtrk10),
+ fIsPPData(kFALSE)
{
//
//Default ctor
fLctoV0bachelorOption(1),
fGenLctoV0bachelorOption(0),
fUseSelectionBit(kTRUE),
- fPDGcode(0)
+ fPDGcode(0),
+ fMultiplicityEstimator(kNtrk10),
+ fIsPPData(kFALSE)
{
//
// Constructor. Initialization of Inputs and Outputs
fLctoV0bachelorOption(c.fLctoV0bachelorOption),
fGenLctoV0bachelorOption(c.fGenLctoV0bachelorOption),
fUseSelectionBit(c.fUseSelectionBit),
- fPDGcode(c.fPDGcode)
+ fPDGcode(c.fPDGcode),
+ fMultiplicityEstimator(c.fMultiplicityEstimator),
+ fIsPPData(c.fIsPPData)
{
//
// Copy Constructor
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));
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
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);
}
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;}
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
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){
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
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="";
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);