CMS 3D CMS Logo

List of all members | Public Types | Public Member Functions | Private Member Functions | Private Attributes
AlignmentTwoBodyDecayTrackSelector Class Reference

#include <AlignmentTwoBodyDecayTrackSelector.h>

Public Types

typedef std::vector< const reco::Track * > Tracks
 

Public Member Functions

 AlignmentTwoBodyDecayTrackSelector (const edm::ParameterSet &cfg, edm::ConsumesCollector &iC)
 constructor More...
 
Tracks select (const Tracks &tracks, const edm::Event &iEvent, const edm::EventSetup &iSetup)
 select tracks More...
 
bool useThisFilter ()
 returns if any of the Filters is used. More...
 
 ~AlignmentTwoBodyDecayTrackSelector ()
 destructor More...
 

Private Member Functions

bool checkAcoplanarity (const reco::Track *trk1, const reco::Track *trk2) const
 checks if the [cands] are acoplanar (returns empty set if not) More...
 
bool checkCharge (const reco::Track *trk1, const reco::Track *trk2=nullptr) const
 checks if the mother has charge = [theCharge] More...
 
Tracks checkMass (const Tracks &cands) const
 checks if the mass of the mother is in the mass region More...
 
bool checkMETAcoplanarity (const reco::Track *trk, const reco::CaloMET *met) const
 checks if [cands] contains a acoplanar track w.r.t missing ET (returns empty set if not) More...
 
Tracks checkMETMass (const Tracks &cands, const edm::Event &iEvent) const
 checks if the mass of the mother is in the mass region adding missing E_T More...
 
void printTracks (const Tracks &col) const
 print Information on Track-Collection More...
 

Private Attributes

bool secThrBool
 
double theAcoplanarDistance
 
bool theAcoplanarityFilterSwitch
 
unsigned int theCandNumber
 
int theCharge
 
bool theChargeSwitch
 
double theDaughterMass
 
bool theMassrangeSwitch
 private data members More...
 
double theMaxMass
 
double theMinMass
 
bool theMissingETSwitch
 
edm::EDGetTokenT< reco::CaloMETCollectiontheMissingETToken
 
double thesecThr
 
bool theUnsignedSwitch
 

Detailed Description

Definition at line 20 of file AlignmentTwoBodyDecayTrackSelector.h.

Member Typedef Documentation

◆ Tracks

Definition at line 22 of file AlignmentTwoBodyDecayTrackSelector.h.

Constructor & Destructor Documentation

◆ AlignmentTwoBodyDecayTrackSelector()

AlignmentTwoBodyDecayTrackSelector::AlignmentTwoBodyDecayTrackSelector ( const edm::ParameterSet cfg,
edm::ConsumesCollector iC 
)

constructor

Definition at line 24 of file AlignmentTwoBoyDecayTrackSelector.cc.

25  {
26  LogDebug("Alignment") << "> applying two body decay Trackfilter ...";
27  theMassrangeSwitch = cfg.getParameter<bool>("applyMassrangeFilter");
28  if (theMassrangeSwitch) {
29  theMinMass = cfg.getParameter<double>("minXMass");
30  theMaxMass = cfg.getParameter<double>("maxXMass");
31  theDaughterMass = cfg.getParameter<double>("daughterMass");
32  theCandNumber = cfg.getParameter<unsigned int>("numberOfCandidates"); //Number of candidates to keep
33  secThrBool = cfg.getParameter<bool>("applySecThreshold");
34  thesecThr = cfg.getParameter<double>("secondThreshold");
35  LogDebug("Alignment") << "> Massrange min,max : " << theMinMass << "," << theMaxMass
36  << "\n> Mass of daughter Particle : " << theDaughterMass;
37 
38  } else {
39  theMinMass = 0;
40  theMaxMass = 0;
41  theDaughterMass = 0;
42  }
43  theChargeSwitch = cfg.getParameter<bool>("applyChargeFilter");
44  if (theChargeSwitch) {
45  theCharge = cfg.getParameter<int>("charge");
46  theUnsignedSwitch = cfg.getParameter<bool>("useUnsignedCharge");
49  LogDebug("Alignment") << "> Desired Charge, unsigned: " << theCharge << " , " << theUnsignedSwitch;
50  } else {
51  theCharge = 0;
52  theUnsignedSwitch = true;
53  }
54  theMissingETSwitch = cfg.getParameter<bool>("applyMissingETFilter");
55  if (theMissingETSwitch) {
56  edm::InputTag theMissingETSource = cfg.getParameter<InputTag>("missingETSource");
57  theMissingETToken = iC.consumes<reco::CaloMETCollection>(theMissingETSource);
58  LogDebug("Alignment") << "> missing Et Source: " << theMissingETSource;
59  }
60  theAcoplanarityFilterSwitch = cfg.getParameter<bool>("applyAcoplanarityFilter");
62  theAcoplanarDistance = cfg.getParameter<double>("acoplanarDistance");
63  LogDebug("Alignment") << "> Acoplanar Distance: " << theAcoplanarDistance;
64  }
65 }

References funct::abs(), looper::cfg, edm::ConsumesCollector::consumes(), LogDebug, and AlignmentTrackSelector_cfi::theCharge.

◆ ~AlignmentTwoBodyDecayTrackSelector()

AlignmentTwoBodyDecayTrackSelector::~AlignmentTwoBodyDecayTrackSelector ( )

destructor

Definition at line 69 of file AlignmentTwoBoyDecayTrackSelector.cc.

69 {}

Member Function Documentation

◆ checkAcoplanarity()

bool AlignmentTwoBodyDecayTrackSelector::checkAcoplanarity ( const reco::Track trk1,
const reco::Track trk2 
) const
private

checks if the [cands] are acoplanar (returns empty set if not)

Definition at line 252 of file AlignmentTwoBoyDecayTrackSelector.cc.

252  {
253  if (fabs(deltaPhi(trk1->phi(), trk2->phi() - M_PI)) < theAcoplanarDistance)
254  return true;
255  return false;
256 }

References SiPixelRawToDigiRegional_cfi::deltaPhi, M_PI, and reco::TrackBase::phi().

◆ checkCharge()

bool AlignmentTwoBodyDecayTrackSelector::checkCharge ( const reco::Track trk1,
const reco::Track trk2 = nullptr 
) const
private

checks if the mother has charge = [theCharge]

Definition at line 240 of file AlignmentTwoBoyDecayTrackSelector.cc.

240  {
241  int sumCharge = trk1->charge();
242  if (trk2)
243  sumCharge += trk2->charge();
244  if (theUnsignedSwitch)
245  sumCharge = std::abs(sumCharge);
246  if (sumCharge == theCharge)
247  return true;
248  return false;
249 }

References funct::abs(), reco::TrackBase::charge(), and AlignmentTrackSelector_cfi::theCharge.

◆ checkMass()

AlignmentTwoBodyDecayTrackSelector::Tracks AlignmentTwoBodyDecayTrackSelector::checkMass ( const Tracks cands) const
private

checks if the mass of the mother is in the mass region

checks if the mass of the X is in the mass region

Definition at line 95 of file AlignmentTwoBoyDecayTrackSelector.cc.

95  {
96  Tracks result;
97 
98  LogDebug("Alignment") << "> cands size : " << cands.size();
99 
100  if (cands.size() < 2)
101  return result;
102 
103  TLorentzVector track0;
104  TLorentzVector track1;
105  TLorentzVector mother;
106  typedef pair<const reco::Track*, const reco::Track*> constTrackPair;
107  typedef pair<double, constTrackPair> candCollectionItem;
108  vector<candCollectionItem> candCollection;
109 
110  for (unsigned int iCand = 0; iCand < cands.size(); iCand++) {
111  track0.SetXYZT(cands.at(iCand)->px(),
112  cands.at(iCand)->py(),
113  cands.at(iCand)->pz(),
114  sqrt(cands.at(iCand)->p() * cands.at(iCand)->p() + theDaughterMass * theDaughterMass));
115 
116  for (unsigned int jCand = iCand + 1; jCand < cands.size(); jCand++) {
117  track1.SetXYZT(cands.at(jCand)->px(),
118  cands.at(jCand)->py(),
119  cands.at(jCand)->pz(),
120  sqrt(cands.at(jCand)->p() * cands.at(jCand)->p() + theDaughterMass * theDaughterMass));
121  if (secThrBool == true && track1.Pt() < thesecThr && track0.Pt() < thesecThr)
122  continue;
123  mother = track0 + track1;
124 
125  const reco::Track* trk1 = cands.at(iCand);
126  const reco::Track* trk2 = cands.at(jCand);
127 
128  bool correctCharge = true;
129  if (theChargeSwitch)
130  correctCharge = this->checkCharge(trk1, trk2);
131 
132  bool acoplanarTracks = true;
134  acoplanarTracks = this->checkAcoplanarity(trk1, trk2);
135 
136  if (mother.M() > theMinMass && mother.M() < theMaxMass && correctCharge && acoplanarTracks) {
137  candCollection.push_back(candCollectionItem(mother.Pt(), constTrackPair(trk1, trk2)));
138  }
139  }
140  }
141 
142  if (candCollection.empty())
143  return result;
144 
145  sort(candCollection.begin(), candCollection.end(), [](auto& a, auto& b) { return a.first > b.first; });
146 
147  std::map<const reco::Track*, unsigned int> uniqueTrackIndex;
148  std::map<const reco::Track*, unsigned int>::iterator it;
149  for (unsigned int i = 0; i < candCollection.size() && i < theCandNumber; i++) {
150  constTrackPair& trackPair = candCollection[i].second;
151 
152  it = uniqueTrackIndex.find(trackPair.first);
153  if (it == uniqueTrackIndex.end()) {
154  result.push_back(trackPair.first);
155  uniqueTrackIndex[trackPair.first] = i;
156  }
157 
158  it = uniqueTrackIndex.find(trackPair.second);
159  if (it == uniqueTrackIndex.end()) {
160  result.push_back(trackPair.second);
161  uniqueTrackIndex[trackPair.second] = i;
162  }
163  }
164 
165  return result;
166 }

References a, b, HLT_FULL_cff::cands, PA_ZEESkim_cff::checkCharge, mps_fire::i, LogDebug, mps_fire::result, jetUpdater_cfi::sort, and mathSSE::sqrt().

◆ checkMETAcoplanarity()

bool AlignmentTwoBodyDecayTrackSelector::checkMETAcoplanarity ( const reco::Track trk,
const reco::CaloMET met 
) const
private

checks if [cands] contains a acoplanar track w.r.t missing ET (returns empty set if not)

checks if the [cands] are acoplanar (returns empty set if not)

Definition at line 259 of file AlignmentTwoBoyDecayTrackSelector.cc.

259  {
260  if (fabs(deltaPhi(trk1->phi(), met->phi() - M_PI)) < theAcoplanarDistance)
261  return true;
262  return false;
263 }

References SiPixelRawToDigiRegional_cfi::deltaPhi, M_PI, BTaggingMonitor_cfi::met, and reco::TrackBase::phi().

◆ checkMETMass()

AlignmentTwoBodyDecayTrackSelector::Tracks AlignmentTwoBodyDecayTrackSelector::checkMETMass ( const Tracks cands,
const edm::Event iEvent 
) const
private

checks if the mass of the mother is in the mass region adding missing E_T

checks if the mass of the X is in the mass region adding missing E_T

Definition at line 169 of file AlignmentTwoBoyDecayTrackSelector.cc.

170  {
171  Tracks result;
172 
173  LogDebug("Alignment") << "> cands size : " << cands.size();
174 
175  if (cands.empty())
176  return result;
177 
178  TLorentzVector track;
179  TLorentzVector met4;
180  TLorentzVector mother;
181 
183  iEvent.getByToken(theMissingETToken, missingET);
184  if (!missingET.isValid()) {
185  LogError("Alignment") << "@SUB=AlignmentTwoBodyDecayTrackSelector::checkMETMass"
186  << "> could not optain missingET Collection!";
187  return result;
188  }
189 
190  typedef pair<double, const reco::Track*> candCollectionItem;
191  vector<candCollectionItem> candCollection;
192 
193  for (reco::CaloMETCollection::const_iterator itMET = missingET->begin(); itMET != missingET->end(); ++itMET) {
194  met4.SetXYZT((*itMET).px(), (*itMET).py(), (*itMET).pz(), (*itMET).p());
195 
196  for (unsigned int iCand = 0; iCand < cands.size(); iCand++) {
197  track.SetXYZT(cands.at(iCand)->px(),
198  cands.at(iCand)->py(),
199  cands.at(iCand)->pz(),
200  sqrt(cands.at(iCand)->p() * cands.at(iCand)->p() + theDaughterMass * theDaughterMass));
201 
202  mother = track + met4;
203 
204  const reco::Track* trk = cands.at(iCand);
205  const reco::CaloMET* met = &(*itMET);
206 
207  bool correctCharge = true;
208  if (theChargeSwitch)
209  correctCharge = this->checkCharge(trk);
210 
211  bool acoplanarTracks = true;
213  acoplanarTracks = this->checkMETAcoplanarity(trk, met);
214 
215  if (mother.M() > theMinMass && mother.M() < theMaxMass && correctCharge && acoplanarTracks) {
216  candCollection.push_back(candCollectionItem(mother.Pt(), trk));
217  }
218  }
219  }
220 
221  if (candCollection.empty())
222  return result;
223 
224  sort(candCollection.begin(), candCollection.end(), [](auto& a, auto& b) { return a.first > b.first; });
225 
226  std::map<const reco::Track*, unsigned int> uniqueTrackIndex;
227  std::map<const reco::Track*, unsigned int>::iterator it;
228  for (unsigned int i = 0; i < candCollection.size() && i < theCandNumber; i++) {
229  it = uniqueTrackIndex.find(candCollection[i].second);
230  if (it == uniqueTrackIndex.end()) {
231  result.push_back(candCollection[i].second);
232  uniqueTrackIndex[candCollection[i].second] = i;
233  }
234  }
235 
236  return result;
237 }

References a, b, HLT_FULL_cff::cands, PA_ZEESkim_cff::checkCharge, mps_fire::i, iEvent, edm::HandleBase::isValid(), LogDebug, BTaggingMonitor_cfi::met, mps_fire::result, edm::second(), jetUpdater_cfi::sort, mathSSE::sqrt(), and HLT_FULL_cff::track.

◆ printTracks()

void AlignmentTwoBodyDecayTrackSelector::printTracks ( const Tracks col) const
private

print Information on Track-Collection

Definition at line 268 of file AlignmentTwoBoyDecayTrackSelector.cc.

268  {
269  int count = 0;
270  LogDebug("Alignment") << ">......................................";
271  for (Tracks::const_iterator it = col.begin(); it < col.end(); ++it, ++count) {
272  LogDebug("Alignment") << "> Track No. " << count << ": p = (" << (*it)->px() << "," << (*it)->py() << ","
273  << (*it)->pz() << ")\n"
274  << "> pT = " << (*it)->pt() << " eta = " << (*it)->eta()
275  << " charge = " << (*it)->charge();
276  }
277  LogDebug("Alignment") << ">......................................";
278 }

References cuy::col, submitPVResolutionJobs::count, and LogDebug.

◆ select()

AlignmentTwoBodyDecayTrackSelector::Tracks AlignmentTwoBodyDecayTrackSelector::select ( const Tracks tracks,
const edm::Event iEvent,
const edm::EventSetup iSetup 
)

select tracks

Definition at line 78 of file AlignmentTwoBoyDecayTrackSelector.cc.

80  {
82 
83  if (theMassrangeSwitch) {
86  else
88  }
89 
90  LogDebug("Alignment") << "> TwoBodyDecay tracks all,kept: " << tracks.size() << "," << result.size();
91  return result;
92 }

References iEvent, LogDebug, mps_fire::result, and tracks.

Referenced by TrackConfigSelector::select().

◆ useThisFilter()

bool AlignmentTwoBodyDecayTrackSelector::useThisFilter ( )

returns if any of the Filters is used.

Definition at line 72 of file AlignmentTwoBoyDecayTrackSelector.cc.

Referenced by TrackConfigSelector::TrackConfigSelector().

Member Data Documentation

◆ secThrBool

bool AlignmentTwoBodyDecayTrackSelector::secThrBool
private

Definition at line 59 of file AlignmentTwoBodyDecayTrackSelector.h.

◆ theAcoplanarDistance

double AlignmentTwoBodyDecayTrackSelector::theAcoplanarDistance
private

Definition at line 67 of file AlignmentTwoBodyDecayTrackSelector.h.

◆ theAcoplanarityFilterSwitch

bool AlignmentTwoBodyDecayTrackSelector::theAcoplanarityFilterSwitch
private

Definition at line 53 of file AlignmentTwoBodyDecayTrackSelector.h.

◆ theCandNumber

unsigned int AlignmentTwoBodyDecayTrackSelector::theCandNumber
private

Definition at line 58 of file AlignmentTwoBodyDecayTrackSelector.h.

◆ theCharge

int AlignmentTwoBodyDecayTrackSelector::theCharge
private

Definition at line 62 of file AlignmentTwoBodyDecayTrackSelector.h.

◆ theChargeSwitch

bool AlignmentTwoBodyDecayTrackSelector::theChargeSwitch
private

Definition at line 51 of file AlignmentTwoBodyDecayTrackSelector.h.

◆ theDaughterMass

double AlignmentTwoBodyDecayTrackSelector::theDaughterMass
private

Definition at line 57 of file AlignmentTwoBodyDecayTrackSelector.h.

◆ theMassrangeSwitch

bool AlignmentTwoBodyDecayTrackSelector::theMassrangeSwitch
private

private data members

Definition at line 50 of file AlignmentTwoBodyDecayTrackSelector.h.

◆ theMaxMass

double AlignmentTwoBodyDecayTrackSelector::theMaxMass
private

Definition at line 56 of file AlignmentTwoBodyDecayTrackSelector.h.

◆ theMinMass

double AlignmentTwoBodyDecayTrackSelector::theMinMass
private

Definition at line 55 of file AlignmentTwoBodyDecayTrackSelector.h.

◆ theMissingETSwitch

bool AlignmentTwoBodyDecayTrackSelector::theMissingETSwitch
private

Definition at line 52 of file AlignmentTwoBodyDecayTrackSelector.h.

◆ theMissingETToken

edm::EDGetTokenT<reco::CaloMETCollection> AlignmentTwoBodyDecayTrackSelector::theMissingETToken
private

Definition at line 65 of file AlignmentTwoBodyDecayTrackSelector.h.

◆ thesecThr

double AlignmentTwoBodyDecayTrackSelector::thesecThr
private

Definition at line 60 of file AlignmentTwoBodyDecayTrackSelector.h.

◆ theUnsignedSwitch

bool AlignmentTwoBodyDecayTrackSelector::theUnsignedSwitch
private

Definition at line 63 of file AlignmentTwoBodyDecayTrackSelector.h.

AlignmentTwoBodyDecayTrackSelector::theMinMass
double theMinMass
Definition: AlignmentTwoBodyDecayTrackSelector.h:55
AlignmentTwoBodyDecayTrackSelector::checkMETAcoplanarity
bool checkMETAcoplanarity(const reco::Track *trk, const reco::CaloMET *met) const
checks if [cands] contains a acoplanar track w.r.t missing ET (returns empty set if not)
Definition: AlignmentTwoBoyDecayTrackSelector.cc:259
mps_fire.i
i
Definition: mps_fire.py:428
HLT_FULL_cff.track
track
Definition: HLT_FULL_cff.py:11713
AlignmentTwoBodyDecayTrackSelector::theUnsignedSwitch
bool theUnsignedSwitch
Definition: AlignmentTwoBodyDecayTrackSelector.h:63
AlignmentTwoBodyDecayTrackSelector::theMissingETSwitch
bool theMissingETSwitch
Definition: AlignmentTwoBodyDecayTrackSelector.h:52
cuy.col
col
Definition: cuy.py:1010
AlignmentTwoBodyDecayTrackSelector::checkMass
Tracks checkMass(const Tracks &cands) const
checks if the mass of the mother is in the mass region
Definition: AlignmentTwoBoyDecayTrackSelector.cc:95
edm::second
U second(std::pair< T, U > const &p)
Definition: ParameterSet.cc:222
AlignmentTwoBodyDecayTrackSelector::theChargeSwitch
bool theChargeSwitch
Definition: AlignmentTwoBodyDecayTrackSelector.h:51
edm::Handle< reco::CaloMETCollection >
AlignmentTwoBodyDecayTrackSelector::theMassrangeSwitch
bool theMassrangeSwitch
private data members
Definition: AlignmentTwoBodyDecayTrackSelector.h:50
BTaggingMonitor_cfi.met
met
Definition: BTaggingMonitor_cfi.py:84
reco::CaloMET
Definition: CaloMET.h:21
AlignmentTwoBodyDecayTrackSelector::theAcoplanarityFilterSwitch
bool theAcoplanarityFilterSwitch
Definition: AlignmentTwoBodyDecayTrackSelector.h:53
AlignmentTwoBodyDecayTrackSelector::checkMETMass
Tracks checkMETMass(const Tracks &cands, const edm::Event &iEvent) const
checks if the mass of the mother is in the mass region adding missing E_T
Definition: AlignmentTwoBoyDecayTrackSelector.cc:169
SiPixelRawToDigiRegional_cfi.deltaPhi
deltaPhi
Definition: SiPixelRawToDigiRegional_cfi.py:9
mathSSE::sqrt
T sqrt(T t)
Definition: SSEVec.h:19
AlignmentTwoBodyDecayTrackSelector::theMissingETToken
edm::EDGetTokenT< reco::CaloMETCollection > theMissingETToken
Definition: AlignmentTwoBodyDecayTrackSelector.h:65
reco::Track
Definition: Track.h:27
AlignmentTwoBodyDecayTrackSelector::theMaxMass
double theMaxMass
Definition: AlignmentTwoBodyDecayTrackSelector.h:56
edm::ConsumesCollector::consumes
EDGetTokenT< ProductType > consumes(edm::InputTag const &tag)
Definition: ConsumesCollector.h:55
submitPVResolutionJobs.count
count
Definition: submitPVResolutionJobs.py:352
reco::TrackBase::charge
int charge() const
track electric charge
Definition: TrackBase.h:596
b
double b
Definition: hdecay.h:118
reco::TrackBase::phi
double phi() const
azimuthal angle of momentum vector
Definition: TrackBase.h:649
HLT_FULL_cff.cands
cands
Definition: HLT_FULL_cff.py:15146
LogDebug
#define LogDebug(id)
Definition: MessageLogger.h:233
a
double a
Definition: hdecay.h:119
tracks
const uint32_t *__restrict__ const HitContainer *__restrict__ TkSoA *__restrict__ tracks
Definition: CAHitNtupletGeneratorKernelsImpl.h:159
jetUpdater_cfi.sort
sort
Definition: jetUpdater_cfi.py:29
AlignmentTwoBodyDecayTrackSelector::thesecThr
double thesecThr
Definition: AlignmentTwoBodyDecayTrackSelector.h:60
AlignmentTwoBodyDecayTrackSelector::theCharge
int theCharge
Definition: AlignmentTwoBodyDecayTrackSelector.h:62
iEvent
int iEvent
Definition: GenABIO.cc:224
M_PI
#define M_PI
Definition: BXVectorInputProducer.cc:49
AlignmentTwoBodyDecayTrackSelector::Tracks
std::vector< const reco::Track * > Tracks
Definition: AlignmentTwoBodyDecayTrackSelector.h:22
edm::LogError
Log< level::Error, false > LogError
Definition: MessageLogger.h:123
AlignmentTwoBodyDecayTrackSelector::checkCharge
bool checkCharge(const reco::Track *trk1, const reco::Track *trk2=nullptr) const
checks if the mother has charge = [theCharge]
Definition: AlignmentTwoBoyDecayTrackSelector.cc:240
looper.cfg
cfg
Definition: looper.py:297
AlignmentTwoBodyDecayTrackSelector::theDaughterMass
double theDaughterMass
Definition: AlignmentTwoBodyDecayTrackSelector.h:57
AlignmentTwoBodyDecayTrackSelector::theCandNumber
unsigned int theCandNumber
Definition: AlignmentTwoBodyDecayTrackSelector.h:58
AlignmentTwoBodyDecayTrackSelector::secThrBool
bool secThrBool
Definition: AlignmentTwoBodyDecayTrackSelector.h:59
mps_fire.result
result
Definition: mps_fire.py:311
funct::abs
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
reco::CaloMETCollection
std::vector< reco::CaloMET > CaloMETCollection
collection of CaloMET objects
Definition: CaloMETCollection.h:20
edm::HandleBase::isValid
bool isValid() const
Definition: HandleBase.h:70
edm::InputTag
Definition: InputTag.h:15
AlignmentTwoBodyDecayTrackSelector::checkAcoplanarity
bool checkAcoplanarity(const reco::Track *trk1, const reco::Track *trk2) const
checks if the [cands] are acoplanar (returns empty set if not)
Definition: AlignmentTwoBoyDecayTrackSelector.cc:252
AlignmentTwoBodyDecayTrackSelector::theAcoplanarDistance
double theAcoplanarDistance
Definition: AlignmentTwoBodyDecayTrackSelector.h:67