16 #include "TLorentzVector.h"
25 theMissingETSource(
"met")
27 LogDebug(
"Alignment") <<
"> applying two body decay Trackfilter ...";
98 LogDebug(
"Alignment") <<
"> TwoBodyDecay tracks all,kept: " << tracks.size() <<
"," << result.size();
111 if(cands.size() == 2){
113 TLorentzVector track0(cands.at(0)->px(),cands.at(0)->py(),cands.at(0)->pz(),
115 TLorentzVector track1(cands.at(1)->px(),cands.at(1)->py(),cands.at(1)->pz(),
116 sqrt((cands.at(1)->p()*cands.at(1)->p())+theDaughterMass*theDaughterMass));
117 TLorentzVector mother = track0+track1;
120 LogDebug(
"Alignment") <<
"> mass of mother: "<<mother.M()<<
"GeV";
130 if(cands.size() == 1){
138 TLorentzVector
track(cands.at(0)->px(),cands.at(0)->py(),cands.at(0)->pz(),
140 TLorentzVector
met((*missingET).at(0).px(),(*missingET).at(0).py(),(*missingET).at(0).pz(),
141 (*missingET).at(0).p());
142 TLorentzVector motherSystem =
track +
met;
145 LogDebug(
"Alignment") <<
"> mass of motherSystem: "<<motherSystem.M()<<
"GeV";
147 LogError(
"Alignment")<<
"@SUB=AlignmentTwoBodyDecayTrackSelector::checkMETMass"
148 <<
"> could not optain missingET Collection!";
159 for(Tracks::const_iterator it = cands.begin();it < cands.end();++it)
160 sumCharge += (*it)->charge();
175 if(cands.size() == 2){
176 LogDebug(
"Alignment") <<
"> Acoplanarity: "<<fabs(fabs(
deltaPhi(cands.at(0)->phi(),cands.at(1)->phi()))-
M_PI)<<endl;
187 if(cands.size() == 1){
192 LogDebug(
"Alignment") <<
"> METAcoplanarity: "<<fabs(fabs(
deltaPhi(cands.at(0)->phi(),(*missingET).at(0).phi()))-
M_PI)<<endl;
197 LogError(
"Alignment")<<
"@SUB=AlignmentTwoBodyDecayTrackSelector::checkMETAcoplanarity"
198 <<
"> could not optain missingET Collection!";
209 LogDebug(
"Alignment") <<
">......................................";
210 for(Tracks::const_iterator it = col.begin();it < col.end();++it,++
count){
212 <<
"> Track No. "<< count <<
": p = ("<<(*it)->px()<<
","<<(*it)->py()<<
","<<(*it)->pz()<<
")\n"
213 <<
"> pT = "<<(*it)->pt()<<
" eta = "<<(*it)->eta()<<
" charge = "<<(*it)->charge();
215 LogDebug(
"Alignment") <<
">......................................";
std::vector< const reco::Track * > Tracks
T getParameter(std::string const &) const
double deltaPhi(float phi1, float phi2)
Tracks checkMETAcoplanarity(const Tracks &cands, const edm::Event &iEvent) const
checks if [cands] contains a acoplanar track w.r.t missing ET (returns empty set if not) ...
Tracks select(const Tracks &tracks, const edm::Event &iEvent)
select tracks
~AlignmentTwoBodyDecayTrackSelector()
destructor
double theAcoplanarDistance
bool useThisFilter()
returns if any of the Filters is used.
void printTracks(const Tracks &col) const
print Information on Track-Collection
Tracks checkAcoplanarity(const Tracks &cands) const
checks if the [cands] are acoplanar (returns empty set if not)
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
AlignmentTwoBodyDecayTrackSelector(const edm::ParameterSet &cfg)
constructor
bool theMassrangeSwitch
private data members
edm::InputTag theMissingETSource
Tracks checkCharge(const Tracks &cands) const
checks if the mother has charge = [theCharge]
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
Tracks checkMass(const Tracks &cands) const
checks if the mass of the mother is in the mass region
bool theAcoplanarityFilterSwitch