Line Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112
/*
 *  See header file for a description of this class.
 *
 *  \author Paolo Ronchese INFN Padova
 *
 */

//-----------------------
// This Class' Header --
//-----------------------
#include "HeavyFlavorAnalysis/SpecificDecay/interface/BPHDecayConstrainedBuilderBase.h"

//-------------------------------
// Collaborating Class Headers --
//-------------------------------
#include "HeavyFlavorAnalysis/RecoDecay/interface/BPHRecoBuilder.h"
#include "HeavyFlavorAnalysis/RecoDecay/interface/BPHPlusMinusCandidate.h"
#include "HeavyFlavorAnalysis/RecoDecay/interface/BPHRecoCandidate.h"
#include "HeavyFlavorAnalysis/RecoDecay/interface/BPHAnalyzerTokenWrapper.h"

//---------------
// C++ Headers --
//---------------
#include <iostream>
using namespace std;

//-------------------
// Initializations --
//-------------------

//----------------
// Constructors --
//----------------
BPHDecayConstrainedBuilderBase::BPHDecayConstrainedBuilderBase(const BPHEventSetupWrapper& es,
                                                               const string& resName,
                                                               double resMass,
                                                               double resWidth)
    : BPHDecayConstrainedBuilderBase(resName, resMass, resWidth) {
  if (evSetup == nullptr)
    evSetup = new BPHEventSetupWrapper(es);
}

BPHDecayConstrainedBuilderBase::BPHDecayConstrainedBuilderBase(const string& resName,
                                                               double resMass,
                                                               double resWidth,
                                                               bool createFitSelObject)
    : rName(resName),
      rMass(resMass),
      rWidth(resWidth),
      resoSel(new BPHMassSelect(-2.0e+06, -1.0e+06)),
      massConstr(true),
      mfSelForce(false) {
  mFitSel = (createFitSelObject ? massFitSelector(-2.0e+06, -1.0e+06) : nullptr);
}

BPHDecayConstrainedBuilderBase::BPHDecayConstrainedBuilderBase() {}

//--------------
// Destructor --
//--------------
BPHDecayConstrainedBuilderBase::~BPHDecayConstrainedBuilderBase() { delete resoSel; }

//--------------
// Operations --
//--------------
/// set cuts
void BPHDecayConstrainedBuilderBase::setResMassMin(double m) {
  outdated = true;
  resoSel->setMassMin(m);
  return;
}

void BPHDecayConstrainedBuilderBase::setResMassMax(double m) {
  outdated = true;
  resoSel->setMassMax(m);
  return;
}

void BPHDecayConstrainedBuilderBase::setResMassRange(double mMin, double mMax) {
  outdated = true;
  resoSel->setMassMin(mMin);
  resoSel->setMassMax(mMax);
  return;
}

void BPHDecayConstrainedBuilderBase::setConstr(bool flag) {
  if ((flag == massConstr) && !mfSelForce)
    return;
  outdated = true;
  massConstr = flag;
  BPHMassFitSelect* mfs = massFitSelector(mFitSel->getMassMin(), mFitSel->getMassMax());
  delete mFitSel;
  mFitSel = mfs;
  mfSelForce = false;
  return;
}

void BPHDecayConstrainedBuilderBase::setMassFitSelect(BPHMassFitSelect* mfs) {
  if (mFitSel == mfs)
    return;
  outdated = true;
  mfSelForce = true;
  mFitSel = mfs;
  return;
}

BPHMassFitSelect* BPHDecayConstrainedBuilderBase::massFitSelector(double mMin, double mMax) {
  if (massConstr)
    return new BPHMassFitSelect(rName, rMass, rWidth, mMin, mMax);
  else
    return new BPHMassFitSelect(mMin, mMax);
}