1 /**************************************************************************
2 * Copyright(c) 1998-2010, ALICE Experiment at CERN, All rights reserved. *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
7 * Permission to use, copy, modify and distribute this software and its *
8 * documentation strictly for non-commercial purposes is hereby granted *
9 * without fee, provided that the above copyright notice appears in all *
10 * copies and that both the copyright notice and this permission notice *
11 * appear in the supporting documentation. The authors make no claims *
12 * about the suitability of this software for any purpose. It is *
13 * provided "as is" without express or implied warranty. *
14 **************************************************************************/
18 /////////////////////////////////////////////////////////////
20 // Class for cuts on AOD reconstructed Ds->KKpi
22 // Author: A.Dainese, andrea.dainese@pd.infn.it
23 /////////////////////////////////////////////////////////////
25 #include <TDatabasePDG.h>
26 #include <Riostream.h>
28 #include "AliRDHFCutsDstoKKpi.h"
29 #include "AliAODRecoDecayHF3Prong.h"
30 #include "AliAODTrack.h"
31 #include "AliESDtrack.h"
33 ClassImp(AliRDHFCutsDstoKKpi)
35 //--------------------------------------------------------------------------
36 AliRDHFCutsDstoKKpi::AliRDHFCutsDstoKKpi(const char* name) :
41 // Default Constructor
45 TString varNames[16]={"inv. mass [GeV]",
57 "inv. mass (Mphi-MKK) [GeV]",
58 "inv. mass (MKo*-MKpi) [GeV]",
59 "Abs(CosineKpiPhiRFrame)^3",
62 Bool_t isUpperCut[16]={kTRUE,
78 SetVarNames(16,varNames,isUpperCut);
79 Bool_t forOpt[16]={kFALSE,
95 SetVarsForOpt(7,forOpt);
96 Float_t limits[2]={0,999999999.};
98 if(fPidHF)delete fPidHF;
99 fPidHF=new AliAODPidHF();
100 Double_t plim[2]={0.6,0.8};
101 Double_t nsigma[5]={2.,1.,2.,3.,0.};
103 fPidHF->SetPLimit(plim);
104 fPidHF->SetAsym(kTRUE);
105 fPidHF->SetSigma(nsigma);
111 fPidHF->SetCompat(kTRUE);
114 //--------------------------------------------------------------------------
115 AliRDHFCutsDstoKKpi::AliRDHFCutsDstoKKpi(const AliRDHFCutsDstoKKpi &source) :
117 fPidOption(source.fPidOption)
124 //--------------------------------------------------------------------------
125 AliRDHFCutsDstoKKpi &AliRDHFCutsDstoKKpi::operator=(const AliRDHFCutsDstoKKpi &source)
128 // assignment operator
130 if(&source == this) return *this;
132 AliRDHFCuts::operator=(source);
134 fPidOption=source.fPidOption;
140 //---------------------------------------------------------------------------
141 void AliRDHFCutsDstoKKpi::GetCutVarsForOpt(AliAODRecoDecayHF *d,Float_t *vars,Int_t nvars,Int_t *pdgdaughters,AliAODEvent *aod) {
143 // Fills in vars the values of the variables
146 if(nvars!=fnVarsForOpt) {
147 printf("AliRDHFCutsDstoKKpi::GetCutsVarsForOpt: wrong number of variables\n");
151 AliAODRecoDecayHF3Prong *dd = (AliAODRecoDecayHF3Prong*)d;
153 //recalculate vertex w/o daughters
154 Bool_t cleanvtx=kFALSE;
155 AliAODVertex *origownvtx=0x0;
156 if(fRemoveDaughtersFromPrimary) {
157 if(dd->GetOwnPrimaryVtx()) origownvtx=new AliAODVertex(*dd->GetOwnPrimaryVtx());
159 if(!RecalcOwnPrimaryVtx(dd,aod)) {
160 CleanOwnPrimaryVtx(dd,aod,origownvtx);
168 if(TMath::Abs(pdgdaughters[0])==321){
169 vars[iter]=dd->InvMassDsKKpi();
171 vars[iter]=dd->InvMassDspiKK();
176 Float_t minPtDau=99999.;
177 for(Int_t iprong=0;iprong<3;iprong++){
178 if(TMath::Abs(pdgdaughters[iprong])==321 &&
179 dd->PtProng(iprong)<minPtDau) minPtDau=dd->PtProng(iprong);
185 for(Int_t iprong=0;iprong<3;iprong++){
186 if(TMath::Abs(pdgdaughters[iprong])==211) {
187 vars[iter]=dd->PtProng(iprong);
193 Float_t minImpParDau=99999.;
194 for(Int_t iprong=0;iprong<3;iprong++){
195 if(TMath::Abs(pdgdaughters[iprong])==321 &&
196 dd->Getd0Prong(iprong)<minImpParDau) minImpParDau=dd->Getd0Prong(iprong);
198 vars[iter]=minImpParDau;
202 for(Int_t iprong=0;iprong<3;iprong++){
203 if(TMath::Abs(pdgdaughters[iprong])==211) {
204 vars[iter]=dd->Getd0Prong(iprong);
210 Float_t minDistPair=TMath::Min(dd->GetDist12toPrim(),dd->GetDist23toPrim());
211 vars[iter]=minDistPair;
215 vars[iter]=dd->GetSigmaVert(aod);
219 vars[iter] = dd->DecayLength();
224 for(Int_t i=0;i<3;i++){
225 if(dd->PtProng(i)>ptmax)ptmax=dd->PtProng(i);
231 vars[iter]=dd->CosPointingAngle();
235 vars[iter]=dd->Getd0Prong(0)*dd->Getd0Prong(0)+dd->Getd0Prong(1)*dd->Getd0Prong(1)+dd->Getd0Prong(2)*dd->Getd0Prong(2);
240 for(Int_t i=0;i<3;i++){
241 if(d->GetDCA(i)>maxDCA) maxDCA=d->GetDCA(i);
247 Double_t mPDGPhi = TDatabasePDG::Instance()->GetParticle(333)->Mass();
248 if(TMath::Abs(pdgdaughters[0])==321){
250 Double_t phimass01=d->InvMass2Prongs(0,1,321,321);
251 vars[iter]=TMath::Abs(phimass01-mPDGPhi);
252 // vars[iter]=dd->InvMass2Prongs(0,1,321,321);
254 Double_t phimass12=d->InvMass2Prongs(1,2,321,321);
255 vars[iter]=TMath::Abs(phimass12-mPDGPhi);
256 // vars[iter]=dd->InvMass2Prongs(1,2,321,321);
261 Double_t mPDGK0star = TDatabasePDG::Instance()->GetParticle(313)->Mass();
262 if(TMath::Abs(pdgdaughters[0])==321){
264 Double_t mass12kpi=d->InvMass2Prongs(1,2,321,211);
265 vars[iter]=TMath::Abs(mass12kpi-mPDGK0star);
266 // vars[iter]=dd->InvMass2Prongs(1,2,321,211);
268 Double_t mass01pik=d->InvMass2Prongs(0,1,211,321);
269 vars[iter]=TMath::Abs(mass01pik-mPDGK0star);
270 // vars[iter]=dd->InvMass2Prongs(0,1,211,321);
275 if(TMath::Abs(pdgdaughters[0])==321){
276 vars[iter]=dd->CosPiKPhiRFrameKKpi();
278 vars[iter]=dd->CosPiKPhiRFramepiKK();
283 if(TMath::Abs(pdgdaughters[0])==321){
284 vars[iter]=dd->CosPiDsLabFrameKKpi();
286 vars[iter]=dd->CosPiDsLabFramepiKK();
290 if(cleanvtx)CleanOwnPrimaryVtx(dd,aod,origownvtx);
293 //---------------------------------------------------------------------------
294 Bool_t AliRDHFCutsDstoKKpi::IsInFiducialAcceptance(Double_t pt, Double_t y) const
297 // Checking if Ds is in fiducial acceptance region
301 // applying cut for pt > 5 GeV
302 AliDebug(2,Form("pt of Ds = %f (> 5), cutting at |y| < 0.8",pt));
303 if (TMath::Abs(y) > 0.8) return kFALSE;
306 // appliying smooth cut for pt < 5 GeV
307 Double_t maxFiducialY = -0.2/15*pt*pt+1.9/15*pt+0.5;
308 Double_t minFiducialY = 0.2/15*pt*pt-1.9/15*pt-0.5;
309 AliDebug(2,Form("pt of Ds = %f (< 5), cutting according to the fiducial zone [%f, %f]\n",pt,minFiducialY,maxFiducialY));
310 if (y < minFiducialY || y > maxFiducialY) return kFALSE;
316 //---------------------------------------------------------------------------
317 Int_t AliRDHFCutsDstoKKpi::IsSelectedPID(AliAODRecoDecayHF *rd) {
319 // return values: 0->NOT OK, 1->OK as KKpi, 2->OK as piKK, 3->OK as both
323 if(!fUsePID || !rd) return retCode;
325 AliWarning("AliAODPidHF not created!");
329 Double_t origCompatTOF=fPidHF->GetPCompatTOF();
330 Double_t origThreshTPC=fPidHF->GetPtThresholdTPC();
331 if(fPidOption==kStrong){
332 fPidHF->SetPCompatTOF(999999.);
333 fPidHF->SetPtThresholdTPC(999999.);
339 Int_t sign= rd->GetCharge();
340 for(Int_t iDaught=0; iDaught<3; iDaught++){
341 AliAODTrack *track=(AliAODTrack*)rd->GetDaughter(iDaught);
343 Int_t isPion=fPidHF->MakeRawPid(track,AliPID::kPion);
344 Int_t isKaon=fPidHF->MakeRawPid(track,AliPID::kKaon);
345 Int_t isProton=fPidHF->MakeRawPid(track,AliPID::kProton);
347 if(isProton>0 && isKaon<0 && isPion<0){
348 fPidHF->SetPCompatTOF(origCompatTOF);
349 fPidHF->SetPtThresholdTPC(origThreshTPC);
352 if(sign!=track->Charge()){// must be kaon
354 fPidHF->SetPCompatTOF(origCompatTOF);
355 fPidHF->SetPtThresholdTPC(origThreshTPC);
358 if(fPidOption==kStrong && isKaon<=0){
359 fPidHF->SetPCompatTOF(origCompatTOF);
360 fPidHF->SetPtThresholdTPC(origThreshTPC);
364 if(isKaon>0 && isPion<0) nKaons++;
365 if(isKaon<0) nNotKaons++;
367 if(isKaon<0) okKKpi=kFALSE;
368 if(isPion<0) okpiKK=kFALSE;
369 if(fPidOption==kStrong){
370 if(isKaon<=0) okKKpi=kFALSE;
371 if(isPion<=0) okpiKK=kFALSE;
375 if(isKaon<0) okpiKK=kFALSE;
376 if(isPion<0) okKKpi=kFALSE;
377 if(fPidOption==kStrong){
378 if(isKaon<=0) okpiKK=kFALSE;
379 if(isPion<=0) okKKpi=kFALSE;
384 fPidHF->SetPCompatTOF(origCompatTOF);
385 fPidHF->SetPtThresholdTPC(origThreshTPC);
387 if(nKaons>2)return 0;
388 if(nNotKaons>1) return 0;
390 if(!okKKpi) retCode-=1;
391 if(!okpiKK) retCode-=2;
396 //---------------------------------------------------------------------------
397 Int_t AliRDHFCutsDstoKKpi::IsSelected(TObject* obj,Int_t selectionLevel, AliAODEvent* aod) {
403 cout<<"Cut matrix not inizialized. Exit..."<<endl;
407 AliAODRecoDecayHF3Prong* d=(AliAODRecoDecayHF3Prong*)obj;
410 cout<<"AliAODRecoDecayHF3Prong null"<<endl;
414 if(fKeepSignalMC) if(IsSignalMC(d,aod,431)) return 3;
416 Double_t ptD=d->Pt();
417 if(ptD<fMinPtCand) return 0;
418 if(ptD>fMaxPtCand) return 0;
420 if(d->HasBadDaughters()) return 0;
423 // selection on daughter tracks
424 if(selectionLevel==AliRDHFCuts::kAll ||
425 selectionLevel==AliRDHFCuts::kTracks) {
426 if(!AreDaughtersSelected(d)) return 0;
432 // selection on candidate
433 if(selectionLevel==AliRDHFCuts::kAll ||
434 selectionLevel==AliRDHFCuts::kCandidate) {
435 //recalculate vertex w/o daughters
436 AliAODVertex *origownvtx=0x0;
437 if(fRemoveDaughtersFromPrimary) {
438 if(d->GetOwnPrimaryVtx()) origownvtx=new AliAODVertex(*d->GetOwnPrimaryVtx());
439 if(!RecalcOwnPrimaryVtx(d,aod)) {
440 CleanOwnPrimaryVtx(d,aod,origownvtx);
447 Int_t okMassPhiKKpi=0;
448 Int_t okMassPhipiKK=0;
449 Int_t okMassK0starKKpi=0;
450 Int_t okMassK0starpiKK=0;
453 Int_t okDsK0starKKpi=0;
454 Int_t okDsK0starpiKK=0;
457 Int_t ptbin=PtBin(pt);
459 CleanOwnPrimaryVtx(d,aod,origownvtx);
463 Double_t mDsPDG = TDatabasePDG::Instance()->GetParticle(431)->Mass();
464 Double_t mDsKKpi=d->InvMassDsKKpi();
465 Double_t mDspiKK=d->InvMassDspiKK();
466 if(TMath::Abs(mDsKKpi-mDsPDG)>fCutsRD[GetGlobalIndex(0,ptbin)]) okDsKKpi = 0;
467 if(TMath::Abs(mDspiKK-mDsPDG)>fCutsRD[GetGlobalIndex(0,ptbin)]) okDspiKK = 0;
468 if(!okDsKKpi && !okDspiKK){
469 CleanOwnPrimaryVtx(d,aod,origownvtx);
475 // cuts on resonant decays (via Phi or K0*)
476 Double_t mPhiPDG = TDatabasePDG::Instance()->GetParticle(333)->Mass();
477 Double_t mK0starPDG = TDatabasePDG::Instance()->GetParticle(313)->Mass();
479 Double_t mass01phi=d->InvMass2Prongs(0,1,321,321);
480 Double_t mass12K0s=d->InvMass2Prongs(1,2,321,211);
481 if(TMath::Abs(mass01phi-mPhiPDG)<fCutsRD[GetGlobalIndex(12,ptbin)]) okMassPhiKKpi=1;
482 if(TMath::Abs(mass12K0s-mK0starPDG)<fCutsRD[GetGlobalIndex(13,ptbin)]) okMassK0starKKpi = 1;
483 if(!okMassPhiKKpi && !okMassK0starKKpi) okDsKKpi=0;
484 if(okMassPhiKKpi) okDsPhiKKpi=1;
485 if(okMassK0starKKpi) okDsK0starKKpi=1;
488 Double_t mass01K0s=d->InvMass2Prongs(0,1,211,321);
489 Double_t mass12phi=d->InvMass2Prongs(1,2,321,321);
490 if(TMath::Abs(mass01K0s-mK0starPDG)<fCutsRD[GetGlobalIndex(13,ptbin)]) okMassK0starpiKK = 1;
491 if(TMath::Abs(mass12phi-mPhiPDG)<fCutsRD[GetGlobalIndex(12,ptbin)]) okMassPhipiKK=1;
492 if(!okMassPhipiKK && !okMassK0starpiKK) okDspiKK=0;
493 if(okMassPhipiKK) okDsPhipiKK=1;
494 if(okMassK0starpiKK) okDsK0starpiKK=1;
496 if(!okDsKKpi && !okDspiKK){
497 CleanOwnPrimaryVtx(d,aod,origownvtx);
501 // Cuts on track pairs
502 for(Int_t i=0;i<3;i++){
503 if(d->GetDCA(i)>fCutsRD[GetGlobalIndex(11,ptbin)]){
504 CleanOwnPrimaryVtx(d,aod,origownvtx);
508 if(d->GetDist12toPrim()<fCutsRD[GetGlobalIndex(5,ptbin)] ||
509 d->GetDist23toPrim()<fCutsRD[GetGlobalIndex(5,ptbin)]){
510 CleanOwnPrimaryVtx(d,aod,origownvtx);
517 if(TMath::Abs(d->Pt2Prong(1)) < fCutsRD[GetGlobalIndex(1,ptbin)]*fCutsRD[GetGlobalIndex(1,ptbin)] ||
518 TMath::Abs(d->Getd0Prong(1))<fCutsRD[GetGlobalIndex(3,ptbin)]){
519 CleanOwnPrimaryVtx(d,aod,origownvtx);
524 if(TMath::Abs(d->Pt2Prong(0)) < fCutsRD[GetGlobalIndex(1,ptbin)]*fCutsRD[GetGlobalIndex(1,ptbin)] ||
525 TMath::Abs(d->Getd0Prong(0))<fCutsRD[GetGlobalIndex(3,ptbin)]) okDsKKpi=0;
526 if(TMath::Abs(d->Pt2Prong(2)) < fCutsRD[GetGlobalIndex(2,ptbin)]*fCutsRD[GetGlobalIndex(2,ptbin)] ||
527 TMath::Abs(d->Getd0Prong(2))<fCutsRD[GetGlobalIndex(4,ptbin)]) okDsKKpi=0;
530 if(TMath::Abs(d->Pt2Prong(0)) < fCutsRD[GetGlobalIndex(2,ptbin)]*fCutsRD[GetGlobalIndex(2,ptbin)] ||
531 TMath::Abs(d->Getd0Prong(0))<fCutsRD[GetGlobalIndex(4,ptbin)]) okDspiKK=0;
532 if(TMath::Abs(d->Pt2Prong(2)) < fCutsRD[GetGlobalIndex(1,ptbin)]*fCutsRD[GetGlobalIndex(1,ptbin)] ||
533 TMath::Abs(d->Getd0Prong(2))<fCutsRD[GetGlobalIndex(3,ptbin)]) okDspiKK=0;
535 if(!okDsKKpi && !okDspiKK){
536 CleanOwnPrimaryVtx(d,aod,origownvtx);
540 // Cuts on candidate triplet
543 if(d->CosPointingAngle()< fCutsRD[GetGlobalIndex(9,ptbin)]){
544 CleanOwnPrimaryVtx(d,aod,origownvtx);
548 if(d->Pt2Prong(0)<fCutsRD[GetGlobalIndex(8,ptbin)]*fCutsRD[GetGlobalIndex(8,ptbin)] &&
549 d->Pt2Prong(1)<fCutsRD[GetGlobalIndex(8,ptbin)]*fCutsRD[GetGlobalIndex(8,ptbin)] &&
550 d->Pt2Prong(2)<fCutsRD[GetGlobalIndex(8,ptbin)]*fCutsRD[GetGlobalIndex(8,ptbin)]) {
551 CleanOwnPrimaryVtx(d,aod,origownvtx);
555 if(d->DecayLength2()<fCutsRD[GetGlobalIndex(7,ptbin)]*fCutsRD[GetGlobalIndex(7,ptbin)]){
556 CleanOwnPrimaryVtx(d,aod,origownvtx);
561 Double_t sum2=d->Getd0Prong(0)*d->Getd0Prong(0)+d->Getd0Prong(1)*d->Getd0Prong(1)+d->Getd0Prong(2)*d->Getd0Prong(2);
562 if(sum2<fCutsRD[GetGlobalIndex(10,ptbin)]){
563 CleanOwnPrimaryVtx(d,aod,origownvtx);
569 Double_t sigmavert=d->GetSigmaVert(aod);
570 if(sigmavert>fCutsRD[GetGlobalIndex(6,ptbin)]){
571 CleanOwnPrimaryVtx(d,aod,origownvtx);
576 Double_t cosPiKPhiRFKKpi=d->CosPiKPhiRFrameKKpi();
577 Double_t kincutPiKPhiKKpi=TMath::Abs(cosPiKPhiRFKKpi*cosPiKPhiRFKKpi*cosPiKPhiRFKKpi);
578 if(kincutPiKPhiKKpi<fCutsRD[GetGlobalIndex(14,ptbin)]) okDsKKpi=0;
581 Double_t cosPiKPhiRFpiKK=d->CosPiKPhiRFramepiKK();
582 Double_t kincutPiKPhipiKK=TMath::Abs(cosPiKPhiRFpiKK*cosPiKPhiRFpiKK*cosPiKPhiRFpiKK);
583 if(kincutPiKPhipiKK<fCutsRD[GetGlobalIndex(14,ptbin)]) okDspiKK=0;
585 if(!okDsKKpi && !okDspiKK){
586 CleanOwnPrimaryVtx(d,aod,origownvtx);
593 Double_t cosPiDsLabFrameKKpi=d->CosPiDsLabFrameKKpi();
594 if(cosPiDsLabFrameKKpi>fCutsRD[GetGlobalIndex(15,ptbin)]) okDsKKpi=0;
597 Double_t cosPiDsLabFramepiKK=d->CosPiDsLabFramepiKK();
598 if(cosPiDsLabFramepiKK>fCutsRD[GetGlobalIndex(15,ptbin)]) okDspiKK=0;
600 if(!okDsKKpi && !okDspiKK){
601 CleanOwnPrimaryVtx(d,aod,origownvtx);
605 // unset recalculated primary vertex when not needed any more
606 CleanOwnPrimaryVtx(d,aod,origownvtx);
620 Int_t returnvaluePID=3;
621 if(selectionLevel==AliRDHFCuts::kAll ||
622 selectionLevel==AliRDHFCuts::kCandidate ||
623 selectionLevel==AliRDHFCuts::kPID) {
624 returnvaluePID = IsSelectedPID(d);
625 fIsSelectedPID=returnvaluePID;
627 if(returnvaluePID==0)return 0;
629 Bool_t okPidDsKKpi=returnvaluePID&1;
630 Bool_t okPidDspiKK=returnvaluePID&2;
640 if((okPidDsKKpi && okDsKKpi)||(okPidDspiKK && okDspiKK)){
642 if(okDsKKpi) returnvalue+=1;
643 if(okDspiKK) returnvalue+=2;
644 if(okDsPhiKKpi) returnvalue+=4;
645 if(okDsPhipiKK) returnvalue+=8;
646 if(okDsK0starKKpi) returnvalue+=16;
647 if(okDsK0starpiKK) returnvalue+=32;
657 //--------------------------------------------------------------------------
659 UInt_t AliRDHFCutsDstoKKpi::GetPIDTrackTPCTOFBitMap(AliAODTrack *track) const{
663 Double_t sigmaTPCPionHyp=-999.;
664 Double_t sigmaTPCKaonHyp=-999.;
665 Double_t sigmaTPCProtonHyp=-999.;
666 Double_t sigmaTOFPionHyp=-999.;
667 Double_t sigmaTOFKaonHyp=-999.;
668 Double_t sigmaTOFProtonHyp=-999.;
670 Int_t oksigmaTPCPionHyp=fPidHF->GetnSigmaTPC(track,2,sigmaTPCPionHyp);
671 Int_t oksigmaTPCKaonHyp=fPidHF->GetnSigmaTPC(track,3,sigmaTPCKaonHyp);
672 Int_t oksigmaTPCProtonHyp=fPidHF->GetnSigmaTPC(track,4,sigmaTPCProtonHyp);
673 Int_t oksigmaTOFPionHyp=fPidHF->GetnSigmaTOF(track,2,sigmaTOFPionHyp);
674 Int_t oksigmaTOFKaonHyp=fPidHF->GetnSigmaTOF(track,3,sigmaTOFKaonHyp);
675 Int_t oksigmaTOFProtonHyp=fPidHF->GetnSigmaTOF(track,4,sigmaTOFProtonHyp);
677 if (oksigmaTPCPionHyp && sigmaTPCPionHyp>0.){
678 if (sigmaTPCPionHyp<2.) bitmap+=1<<kTPCPionLess2;
679 else { if (sigmaTPCPionHyp<3.) bitmap+=1<<kTPCPionMore2Less3; else bitmap+=1<<kTPCPionMore3;}
681 if (oksigmaTPCKaonHyp && sigmaTPCKaonHyp>0.){
682 if (sigmaTPCKaonHyp<2.) bitmap+=1<<kTPCKaonLess2;
683 else { if (sigmaTPCKaonHyp<3.) bitmap+=1<<kTPCKaonMore2Less3; else bitmap+=1<<kTPCKaonMore3;}
685 if (oksigmaTPCProtonHyp && sigmaTPCProtonHyp>0.){
686 if (sigmaTPCProtonHyp<2.) bitmap+=1<<kTPCProtonLess2;
687 else { if (sigmaTPCProtonHyp<3.) bitmap+=1<<kTPCProtonMore2Less3; else bitmap+=1<<kTPCProtonMore3;}
690 if (oksigmaTOFPionHyp && sigmaTOFPionHyp>0.){
691 if (sigmaTOFPionHyp<2.) bitmap+=1<<kTOFPionLess2;
692 else { if (sigmaTOFPionHyp<3.) bitmap+=1<<kTOFPionMore2Less3; else bitmap+=1<<kTOFPionMore3;}
694 if (oksigmaTOFKaonHyp && sigmaTOFKaonHyp>0.){
695 if (sigmaTOFKaonHyp<2.) bitmap+=1<<kTOFKaonLess2;
696 else { if (sigmaTOFKaonHyp<3.) bitmap+=1<<kTOFKaonMore2Less3; else bitmap+=1<<kTOFKaonMore3;}
698 if (oksigmaTOFProtonHyp && sigmaTOFProtonHyp>0.){
699 if (sigmaTOFProtonHyp<2.) bitmap+=1<<kTOFProtonLess2;
700 else { if (sigmaTOFProtonHyp<3.) bitmap+=1<<kTOFProtonMore2Less3; else bitmap+=1<<kTOFProtonMore3;}