1 |
|
#include "TrkUpgradeAnalysis/VHbb/interface/VHbbCandidateCuts.h" |
2 |
|
|
3 |
+ |
#include "TrkUpgradeAnalysis/VHbb/interface/VHbbCandidateVariables.h" |
4 |
+ |
#include "TrkUpgradeAnalysis/VHbb/interface/tools.h" |
5 |
+ |
|
6 |
|
// Required to work out deltaPhi |
7 |
|
#include "DataFormats/GeometryVector/interface/VectorUtil.h" |
8 |
|
|
9 |
|
|
10 |
+ |
|
11 |
+ |
trkupgradeanalysis::CutOnVariable::CutOnVariable( const trkupgradeanalysis::variables::VHbbCandidateVariable& variable, const trkupgradeanalysis::cuts::ICutType& cut ) |
12 |
+ |
: pCut_( cut.copy() ), pVHbbCandidateVariable_( variable.copy() ) |
13 |
+ |
{ |
14 |
+ |
// No operation besides the initialiser list |
15 |
+ |
} |
16 |
+ |
|
17 |
+ |
trkupgradeanalysis::CutOnVariable::~CutOnVariable() |
18 |
+ |
{ |
19 |
+ |
// No operation |
20 |
+ |
} |
21 |
+ |
|
22 |
+ |
std::string trkupgradeanalysis::CutOnVariable::name() const |
23 |
+ |
{ |
24 |
+ |
return pVHbbCandidateVariable_->variableName()+pCut_->name(); |
25 |
+ |
} |
26 |
+ |
|
27 |
+ |
const trkupgradeanalysis::IHistogramVariable& trkupgradeanalysis::CutOnVariable::cutVariable() const |
28 |
+ |
{ |
29 |
+ |
return *pVHbbCandidateVariable_; |
30 |
+ |
} |
31 |
+ |
|
32 |
+ |
bool trkupgradeanalysis::CutOnVariable::applyCut( const VHbbCandidate& vhbbCandidate ) const |
33 |
+ |
{ |
34 |
+ |
pVHbbCandidateVariable_->set(vhbbCandidate); |
35 |
+ |
return pCut_->apply( pVHbbCandidateVariable_->histogrammableValue() ); |
36 |
+ |
} |
37 |
+ |
|
38 |
+ |
bool trkupgradeanalysis::CutOnVariable::applyCut( const trkupgradeanalysis::tools::NTupleRow& ntupleRow ) const |
39 |
+ |
{ |
40 |
+ |
pVHbbCandidateVariable_->set(ntupleRow); |
41 |
+ |
return pCut_->apply( pVHbbCandidateVariable_->histogrammableValue() ); |
42 |
+ |
} |
43 |
+ |
|
44 |
+ |
|
45 |
+ |
|
46 |
+ |
|
47 |
+ |
|
48 |
+ |
|
49 |
+ |
|
50 |
|
trkupgradeanalysis::CandidateTypeEquals::CandidateTypeEquals( VHbbCandidate::CandidateType candidateType ) |
51 |
|
{ |
52 |
|
requiredCandidateTypes_.push_back(candidateType); |
108 |
|
return false; |
109 |
|
} |
110 |
|
|
111 |
+ |
bool trkupgradeanalysis::CandidateTypeEquals::applyCut( const trkupgradeanalysis::tools::NTupleRow& ntupleRow ) const |
112 |
+ |
{ |
113 |
+ |
lastValue_=static_cast<VHbbCandidate::CandidateType>( ntupleRow.getDouble( variableName() ) ); |
114 |
+ |
|
115 |
+ |
for( std::vector<VHbbCandidate::CandidateType>::const_iterator iRequiredCandidateType=requiredCandidateTypes_.begin(); iRequiredCandidateType!=requiredCandidateTypes_.end(); ++iRequiredCandidateType ) |
116 |
+ |
{ |
117 |
+ |
if( *iRequiredCandidateType==lastValue_ ) return true; |
118 |
+ |
} |
119 |
+ |
|
120 |
+ |
// If control reaches this far than non of the entries in the vector matched |
121 |
+ |
return false; |
122 |
+ |
} |
123 |
+ |
|
124 |
|
std::string trkupgradeanalysis::CandidateTypeEquals::variableName() const |
125 |
|
{ |
126 |
|
return "CandidateType"; |
163 |
|
|
164 |
|
std::string trkupgradeanalysis::NumberOfJets::name() const |
165 |
|
{ |
166 |
< |
return variableName()+pCut_->name();} |
166 |
> |
return variableName()+pCut_->name(); |
167 |
> |
} |
168 |
|
|
169 |
|
const trkupgradeanalysis::IHistogramVariable& trkupgradeanalysis::NumberOfJets::cutVariable() const |
170 |
|
{ |
179 |
|
return pCut_->apply(lastValue_); |
180 |
|
} |
181 |
|
|
182 |
+ |
bool trkupgradeanalysis::NumberOfJets::applyCut( const trkupgradeanalysis::tools::NTupleRow& ntupleRow ) const |
183 |
+ |
{ |
184 |
+ |
lastValue_=ntupleRow.getDouble( variableName() ); |
185 |
+ |
return pCut_->apply(lastValue_); |
186 |
+ |
} |
187 |
+ |
|
188 |
|
std::string trkupgradeanalysis::NumberOfJets::variableName() const { return "numberOfJets"; } |
189 |
|
double trkupgradeanalysis::NumberOfJets::histogrammableValue() const { return lastValue_; } |
190 |
|
size_t trkupgradeanalysis::NumberOfJets::suggestedNumberOfBins() const { return 6; } |
226 |
|
return pCut_->apply(lastValue_); |
227 |
|
} |
228 |
|
|
229 |
+ |
bool trkupgradeanalysis::PtOfJetN::applyCut( const trkupgradeanalysis::tools::NTupleRow& ntupleRow ) const |
230 |
+ |
{ |
231 |
+ |
lastValue_=ntupleRow.getDouble( variableName() ); |
232 |
+ |
return pCut_->apply(lastValue_); |
233 |
+ |
} |
234 |
+ |
|
235 |
|
std::string trkupgradeanalysis::PtOfJetN::variableName() const |
236 |
|
{ |
237 |
|
std::stringstream nameStream; |
278 |
|
return pCut_->apply( lastValue_ ); |
279 |
|
} |
280 |
|
|
281 |
+ |
bool trkupgradeanalysis::PtOfHiggs::applyCut( const trkupgradeanalysis::tools::NTupleRow& ntupleRow ) const |
282 |
+ |
{ |
283 |
+ |
lastValue_=ntupleRow.getDouble( variableName() ); |
284 |
+ |
return pCut_->apply(lastValue_); |
285 |
+ |
} |
286 |
+ |
|
287 |
|
std::string trkupgradeanalysis::PtOfHiggs::variableName() const { return "PtOfHiggs"; } |
288 |
|
double trkupgradeanalysis::PtOfHiggs::histogrammableValue() const { return lastValue_; } |
289 |
|
size_t trkupgradeanalysis::PtOfHiggs::suggestedNumberOfBins() const { return 60; } |
323 |
|
return pCut_->apply( lastValue_ ); |
324 |
|
} |
325 |
|
|
326 |
+ |
bool trkupgradeanalysis::PtOfVectorBoson::applyCut( const trkupgradeanalysis::tools::NTupleRow& ntupleRow ) const |
327 |
+ |
{ |
328 |
+ |
lastValue_=ntupleRow.getDouble( variableName() ); |
329 |
+ |
return pCut_->apply(lastValue_); |
330 |
+ |
} |
331 |
+ |
|
332 |
|
std::string trkupgradeanalysis::PtOfVectorBoson::variableName() const |
333 |
|
{ |
334 |
|
return "PtOfVectorBoson"; |
359 |
|
|
360 |
|
|
361 |
|
|
362 |
< |
trkupgradeanalysis::NumberOfAdditionalJets::NumberOfAdditionalJets( const trkupgradeanalysis::cuts::ICutType& cut, bool applyCleaning ) |
362 |
> |
trkupgradeanalysis::NumberOfAdditionalJetsCut::NumberOfAdditionalJetsCut( const trkupgradeanalysis::cuts::ICutType& cut, bool applyCleaning ) |
363 |
|
: pCut_( cut.copy() ), applyCleaning_(applyCleaning) |
364 |
|
{ |
365 |
|
// No operation apart from the initialiser list |
366 |
|
} |
367 |
|
|
368 |
< |
trkupgradeanalysis::NumberOfAdditionalJets::~NumberOfAdditionalJets() |
368 |
> |
trkupgradeanalysis::NumberOfAdditionalJetsCut::~NumberOfAdditionalJetsCut() |
369 |
|
{ |
370 |
|
// No operation |
371 |
|
} |
372 |
|
|
373 |
< |
std::string trkupgradeanalysis::NumberOfAdditionalJets::name() const |
373 |
> |
std::string trkupgradeanalysis::NumberOfAdditionalJetsCut::name() const |
374 |
|
{ |
375 |
|
return variableName()+pCut_->name(); |
376 |
|
} |
377 |
|
|
378 |
< |
const trkupgradeanalysis::IHistogramVariable& trkupgradeanalysis::NumberOfAdditionalJets::cutVariable() const |
378 |
> |
const trkupgradeanalysis::IHistogramVariable& trkupgradeanalysis::NumberOfAdditionalJetsCut::cutVariable() const |
379 |
|
{ |
380 |
|
// This class implements the HistogramVariable interface to save on the |
381 |
|
// number of classes, so just return a reference to this instance. |
382 |
|
return *this; |
383 |
|
} |
384 |
|
|
385 |
< |
bool trkupgradeanalysis::NumberOfAdditionalJets::applyCut( const VHbbCandidate& vhbbCandidate ) const |
385 |
> |
bool trkupgradeanalysis::NumberOfAdditionalJetsCut::applyCut( const VHbbCandidate& vhbbCandidate ) const |
386 |
|
{ |
387 |
|
if( !applyCleaning_ ) lastValue_=vhbbCandidate.additionalJets.size(); |
388 |
|
else |
397 |
|
return pCut_->apply( lastValue_ ); |
398 |
|
} |
399 |
|
|
400 |
< |
bool trkupgradeanalysis::NumberOfAdditionalJets::jetId( const VHbbEvent::SimpleJet& jet ) const |
400 |
> |
bool trkupgradeanalysis::NumberOfAdditionalJetsCut::applyCut( const trkupgradeanalysis::tools::NTupleRow& ntupleRow ) const |
401 |
> |
{ |
402 |
> |
lastValue_=ntupleRow.getDouble( variableName() ); |
403 |
> |
return pCut_->apply(lastValue_); |
404 |
> |
} |
405 |
> |
|
406 |
> |
bool trkupgradeanalysis::NumberOfAdditionalJetsCut::jetId( const VHbbEvent::SimpleJet& jet ) const |
407 |
|
{ |
408 |
|
if( jet.neutralHadronEFraction > 0.99 ) return false; |
409 |
|
if( jet.neutralEmEFraction > 0.99 ) return false; |
418 |
|
return true; |
419 |
|
} |
420 |
|
|
421 |
< |
std::string trkupgradeanalysis::NumberOfAdditionalJets::variableName() const |
421 |
> |
std::string trkupgradeanalysis::NumberOfAdditionalJetsCut::variableName() const |
422 |
|
{ |
423 |
< |
return "NumberOfAdditionalJets"; |
423 |
> |
return "NumberOfAdditionalJetsCut"; |
424 |
|
} |
425 |
|
|
426 |
< |
double trkupgradeanalysis::NumberOfAdditionalJets::histogrammableValue() const |
426 |
> |
double trkupgradeanalysis::NumberOfAdditionalJetsCut::histogrammableValue() const |
427 |
|
{ |
428 |
|
return lastValue_; |
429 |
|
} |
430 |
|
|
431 |
< |
size_t trkupgradeanalysis::NumberOfAdditionalJets::suggestedNumberOfBins() const |
431 |
> |
size_t trkupgradeanalysis::NumberOfAdditionalJetsCut::suggestedNumberOfBins() const |
432 |
|
{ |
433 |
|
return 91; |
434 |
|
} |
435 |
|
|
436 |
< |
double trkupgradeanalysis::NumberOfAdditionalJets::suggestedLowerEdge() const |
436 |
> |
double trkupgradeanalysis::NumberOfAdditionalJetsCut::suggestedLowerEdge() const |
437 |
|
{ |
438 |
|
return -0.5; |
439 |
|
} |
440 |
|
|
441 |
< |
double trkupgradeanalysis::NumberOfAdditionalJets::suggestedUpperEdge() const |
441 |
> |
double trkupgradeanalysis::NumberOfAdditionalJetsCut::suggestedUpperEdge() const |
442 |
|
{ |
443 |
|
return 90.5; |
444 |
|
} |
481 |
|
return pCut_->apply( lastValue_ ); |
482 |
|
} |
483 |
|
|
484 |
+ |
bool trkupgradeanalysis::NumberOfAdditionalLeptons::applyCut( const trkupgradeanalysis::tools::NTupleRow& ntupleRow ) const |
485 |
+ |
{ |
486 |
+ |
lastValue_=ntupleRow.getDouble( variableName() ); |
487 |
+ |
return pCut_->apply(lastValue_); |
488 |
+ |
} |
489 |
+ |
|
490 |
|
std::string trkupgradeanalysis::NumberOfAdditionalLeptons::variableName() const |
491 |
|
{ |
492 |
|
return "NumberOfAdditionalLeptons"; |
550 |
|
return pCut_->apply( lastValue_ ); |
551 |
|
} |
552 |
|
|
553 |
+ |
bool trkupgradeanalysis::METSigma::applyCut( const trkupgradeanalysis::tools::NTupleRow& ntupleRow ) const |
554 |
+ |
{ |
555 |
+ |
lastValue_=ntupleRow.getDouble( variableName() ); |
556 |
+ |
return pCut_->apply(lastValue_); |
557 |
+ |
} |
558 |
+ |
|
559 |
|
std::string trkupgradeanalysis::METSigma::variableName() const |
560 |
|
{ |
561 |
|
return "METSigma"; |
618 |
|
return pCut_->apply( lastValue_ ); |
619 |
|
} |
620 |
|
|
621 |
+ |
bool trkupgradeanalysis::PtOfElectronN::applyCut( const trkupgradeanalysis::tools::NTupleRow& ntupleRow ) const |
622 |
+ |
{ |
623 |
+ |
lastValue_=ntupleRow.getDouble( variableName() ); |
624 |
+ |
return pCut_->apply(lastValue_); |
625 |
+ |
} |
626 |
+ |
|
627 |
|
std::string trkupgradeanalysis::PtOfElectronN::variableName() const |
628 |
|
{ |
629 |
|
std::stringstream nameStream; |
686 |
|
return pCut_->apply( lastValue_ ); |
687 |
|
} |
688 |
|
|
689 |
+ |
bool trkupgradeanalysis::MassOfVectorBoson::applyCut( const trkupgradeanalysis::tools::NTupleRow& ntupleRow ) const |
690 |
+ |
{ |
691 |
+ |
lastValue_=ntupleRow.getDouble( variableName() ); |
692 |
+ |
return pCut_->apply(lastValue_); |
693 |
+ |
} |
694 |
+ |
|
695 |
|
std::string trkupgradeanalysis::MassOfVectorBoson::variableName() const |
696 |
|
{ |
697 |
|
return "MassOfVectorBoson"; |
752 |
|
return pCut_->apply( lastValue_ ); |
753 |
|
} |
754 |
|
|
755 |
+ |
bool trkupgradeanalysis::MassOfHiggsBoson::applyCut( const trkupgradeanalysis::tools::NTupleRow& ntupleRow ) const |
756 |
+ |
{ |
757 |
+ |
lastValue_=ntupleRow.getDouble( variableName() ); |
758 |
+ |
return pCut_->apply(lastValue_); |
759 |
+ |
} |
760 |
+ |
|
761 |
|
std::string trkupgradeanalysis::MassOfHiggsBoson::variableName() const |
762 |
|
{ |
763 |
|
return "MassOfHiggsBoson"; |
829 |
|
return lastValue_ > requiredCSV_; |
830 |
|
} |
831 |
|
|
832 |
+ |
bool trkupgradeanalysis::CSVOfAnyJetGreaterThan::applyCut( const trkupgradeanalysis::tools::NTupleRow& ntupleRow ) const |
833 |
+ |
{ |
834 |
+ |
lastValue_=ntupleRow.getDouble( variableName() ); |
835 |
+ |
return lastValue_ > requiredCSV_; |
836 |
+ |
} |
837 |
+ |
|
838 |
|
std::string trkupgradeanalysis::CSVOfAnyJetGreaterThan::variableName() const |
839 |
|
{ |
840 |
|
std::stringstream nameStream; |
912 |
|
return lastValue_ > requiredCSV_; |
913 |
|
} |
914 |
|
|
915 |
+ |
bool trkupgradeanalysis::CSVOfAllJetsGreaterThan::applyCut( const trkupgradeanalysis::tools::NTupleRow& ntupleRow ) const |
916 |
+ |
{ |
917 |
+ |
lastValue_=ntupleRow.getDouble( variableName() ); |
918 |
+ |
return lastValue_ > requiredCSV_; |
919 |
+ |
} |
920 |
+ |
|
921 |
|
std::string trkupgradeanalysis::CSVOfAllJetsGreaterThan::variableName() const |
922 |
|
{ |
923 |
|
std::stringstream nameStream; |
983 |
|
return pCut_->apply( lastValue_ ); |
984 |
|
} |
985 |
|
|
986 |
+ |
bool trkupgradeanalysis::NumberOfMETObjects::applyCut( const trkupgradeanalysis::tools::NTupleRow& ntupleRow ) const |
987 |
+ |
{ |
988 |
+ |
lastValue_=ntupleRow.getDouble( variableName() ); |
989 |
+ |
return pCut_->apply(lastValue_); |
990 |
+ |
} |
991 |
+ |
|
992 |
|
std::string trkupgradeanalysis::NumberOfMETObjects::variableName() const { return "numberOfMETObjects"; } |
993 |
|
double trkupgradeanalysis::NumberOfMETObjects::histogrammableValue() const { return lastValue_; } |
994 |
|
size_t trkupgradeanalysis::NumberOfMETObjects::suggestedNumberOfBins() const { return 6; } |
1038 |
|
return pCut_->apply( lastValue_ ); |
1039 |
|
} |
1040 |
|
|
1041 |
+ |
bool trkupgradeanalysis::PtOfMETN::applyCut( const trkupgradeanalysis::tools::NTupleRow& ntupleRow ) const |
1042 |
+ |
{ |
1043 |
+ |
lastValue_=ntupleRow.getDouble( variableName() ); |
1044 |
+ |
return pCut_->apply(lastValue_); |
1045 |
+ |
} |
1046 |
+ |
|
1047 |
|
std::string trkupgradeanalysis::PtOfMETN::variableName() const |
1048 |
|
{ |
1049 |
|
std::stringstream nameStream; |
1062 |
|
|
1063 |
|
|
1064 |
|
|
1065 |
< |
trkupgradeanalysis::DeltaPhiVH::DeltaPhiVH( const trkupgradeanalysis::cuts::ICutType& cut ) |
1065 |
> |
trkupgradeanalysis::DeltaPhiVHCut::DeltaPhiVHCut( const trkupgradeanalysis::cuts::ICutType& cut ) |
1066 |
|
: pCut_( cut.copy() ) |
1067 |
|
{ |
1068 |
|
// No operation apart from the initialiser list |
1069 |
|
} |
1070 |
|
|
1071 |
< |
trkupgradeanalysis::DeltaPhiVH::~DeltaPhiVH() |
1071 |
> |
trkupgradeanalysis::DeltaPhiVHCut::~DeltaPhiVHCut() |
1072 |
|
{ |
1073 |
|
// No operation |
1074 |
|
} |
1075 |
|
|
1076 |
< |
std::string trkupgradeanalysis::DeltaPhiVH::name() const |
1076 |
> |
std::string trkupgradeanalysis::DeltaPhiVHCut::name() const |
1077 |
|
{ |
1078 |
|
return variableName()+pCut_->name(); |
1079 |
|
} |
1080 |
|
|
1081 |
< |
const trkupgradeanalysis::IHistogramVariable& trkupgradeanalysis::DeltaPhiVH::cutVariable() const |
1081 |
> |
const trkupgradeanalysis::IHistogramVariable& trkupgradeanalysis::DeltaPhiVHCut::cutVariable() const |
1082 |
|
{ |
1083 |
|
// This class implements the HistogramVariable interface to save on the |
1084 |
|
// number of classes, so just return a reference to this instance. |
1085 |
|
return *this; |
1086 |
|
} |
1087 |
|
|
1088 |
< |
bool trkupgradeanalysis::DeltaPhiVH::applyCut( const VHbbCandidate& vhbbCandidate ) const |
1088 |
> |
bool trkupgradeanalysis::DeltaPhiVHCut::applyCut( const VHbbCandidate& vhbbCandidate ) const |
1089 |
|
{ |
1090 |
|
lastValue_=TMath::Abs( Geom::deltaPhi( vhbbCandidate.H.p4.Phi(), vhbbCandidate.V.p4.Phi() ) ); |
1091 |
|
return pCut_->apply( lastValue_ ); |
1092 |
|
} |
1093 |
|
|
1094 |
< |
std::string trkupgradeanalysis::DeltaPhiVH::variableName() const { return "DeltaPhiVH";} |
1095 |
< |
double trkupgradeanalysis::DeltaPhiVH::histogrammableValue() const { return lastValue_; } |
1096 |
< |
size_t trkupgradeanalysis::DeltaPhiVH::suggestedNumberOfBins() const { return 60; } |
1097 |
< |
double trkupgradeanalysis::DeltaPhiVH::suggestedLowerEdge() const { return 0; } |
1098 |
< |
double trkupgradeanalysis::DeltaPhiVH::suggestedUpperEdge() const { return M_PI; } |
1094 |
> |
bool trkupgradeanalysis::DeltaPhiVHCut::applyCut( const trkupgradeanalysis::tools::NTupleRow& ntupleRow ) const |
1095 |
> |
{ |
1096 |
> |
lastValue_=ntupleRow.getDouble( variableName() ); |
1097 |
> |
return pCut_->apply(lastValue_); |
1098 |
> |
} |
1099 |
> |
|
1100 |
> |
std::string trkupgradeanalysis::DeltaPhiVHCut::variableName() const { return "DeltaPhiVHCut";} |
1101 |
> |
double trkupgradeanalysis::DeltaPhiVHCut::histogrammableValue() const { return lastValue_; } |
1102 |
> |
size_t trkupgradeanalysis::DeltaPhiVHCut::suggestedNumberOfBins() const { return 60; } |
1103 |
> |
double trkupgradeanalysis::DeltaPhiVHCut::suggestedLowerEdge() const { return 0; } |
1104 |
> |
double trkupgradeanalysis::DeltaPhiVHCut::suggestedUpperEdge() const { return M_PI; } |