#include "AliAnalysisTaskSE.h"
#include "AliCFVertexingHF2Prong.h"
+#include "AliCFVertexingHF3Prong.h"
#include "AliCFVertexingHF.h"
class TH1I;
void SetKeepDsViaPhi(){fDsOption=1;}
void SetKeepDsViaK0star(){fDsOption=2;}
void SetKeepAllDs(){fDsOption=3;}
- void SetCountDsViaPhi(){fGenDsOption=1;}
- void SetCountDsViaK0star(){fGenDsOption=2;}
- void SetCountAllDs(){fGenDsOption=3;}
+ void SetCountAllDs(){fGenDsOption=AliCFVertexingHF3Prong::kCountAllDsKKpi;}
+ void SetCountDsViaPhi(){fGenDsOption=AliCFVertexingHF3Prong::kCountPhipi;}
+ void SetCountDsViaK0star(){fGenDsOption=AliCFVertexingHF3Prong::kCountK0stK;}
+ void SetCountResonantDs(){fGenDsOption=AliCFVertexingHF3Prong::kCountResonant;}
+ void SetCountNonResonantDs(){fGenDsOption=AliCFVertexingHF3Prong::kCountNonResonant;}
Bool_t ProcessDs(Int_t returnCodeDs) const;
AliCFVertexingHF3Prong::AliCFVertexingHF3Prong(Int_t decay):
AliCFVertexingHF(),
fDecay(decay),
- fGenDsOption(3)
+ fGenDsOption(kCountResonant)
{
//
SetNProngs(3);
AliCFVertexingHF3Prong::AliCFVertexingHF3Prong(TClonesArray *mcArray, UShort_t originDselection, Int_t decay):
AliCFVertexingHF(mcArray, originDselection),
fDecay(decay),
- fGenDsOption(3)
+ fGenDsOption(kCountResonant)
{
//
SetNProngs(3);
return bSignAssoc;
}
- if(fDecay==kDstoKKpi && fGenDsOption!=3){
+ if(fDecay==kDstoKKpi && fGenDsOption!=kCountAllDsKKpi){
if(!CheckMCChannelDecay()){
AliDebug(3,"Ds not from the selected resonant channel");
return bSignAssoc;
Int_t nDau=fmcPartCandidate->GetNDaughters();
Int_t labelFirstDau = fmcPartCandidate->GetDaughter(0);
if(nDau==3){
+ if(fDecay==kDstoKKpi && !(fGenDsOption==kCountAllDsKKpi || fGenDsOption==kCountNonResonant)){
+ AliDebug(3,"Decay channel in direct KKpi, should be skipped");
+ return checkCD;
+ }
for(Int_t iDau=0; iDau<3; iDau++){
Int_t ind = labelFirstDau+iDau;
AliAODMCParticle* part = dynamic_cast<AliAODMCParticle*>(fmcArray->At(ind));
daughter[iDau]=TMath::Abs(part->GetPdgCode());
}
}else if(nDau==2){
+ if(fDecay==kDstoKKpi && fGenDsOption==kCountNonResonant) return checkCD;
Int_t nDauFound=0;
for(Int_t iDau=0; iDau<2; iDau++){
Int_t ind = labelFirstDau+iDau;
}else{
if(fDecay==kDstoKKpi && fGenDsOption!=3){
Int_t pdgCodeRes=TMath::Abs(part->GetPdgCode());
- if(fGenDsOption==1 && pdgCodeRes!=333) return checkCD;
- else if(fGenDsOption==2 && pdgCodeRes!=313) return checkCD;
+ if(fGenDsOption==kCountPhipi && pdgCodeRes!=333) return checkCD;
+ else if(fGenDsOption==kCountK0stK && pdgCodeRes!=313) return checkCD;
}
Int_t nDauRes=part->GetNDaughters();
if(nDauRes!=2) return checkCD;
\r
void SetGeneratedDsOption(Int_t opt) {fGenDsOption=opt;}\r
Int_t GetGeneratedDsOption() const {return fGenDsOption;}\r
- \r
+\r
+ enum EDsSel {kCountAllDsKKpi=0, kCountPhipi=1, kCountK0stK=2, kCountResonant=3, kCountNonResonant=4};\r
+\r
protected:\r
\r
\r
AliCFVertexingHF3Prong& operator= (const AliCFVertexingHF3Prong& other);\r
\r
Int_t fDecay; // decay mode id\r
- Int_t fGenDsOption; // 0(default) --> count all Ds->KKpi, 1 --> count Ds->phipi 2--> count Ds->K0*K\r
+ Int_t fGenDsOption; // option for selection Ds (see enum)\r
\r
ClassDef(AliCFVertexingHF3Prong, 2);\r
\r