38 fastAccept_ (iConfig.getParameter<
bool>(
"FastAccept")),
39 minLxySignificance_ (iConfig.getParameter<double>(
"MinLxySignificance")),
40 maxLxySignificance_ (iConfig.getParameter<double>(
"MaxLxySignificance")),
41 maxNormalisedChi2_ (iConfig.getParameter<double>(
"MaxNormalisedChi2")),
42 minVtxProbability_ (iConfig.getParameter<double>(
"MinVtxProbability")),
43 minCosinePointingAngle_ (iConfig.getParameter<double>(
"MinCosinePointingAngle")),
44 triggerTypeDaughters_(iConfig.getParameter<
int>(
"triggerTypeDaughters")),
45 DisplacedVertexTag_(iConfig.getParameter<
edm::InputTag>(
"DisplacedVertexTag")),
47 beamSpotTag_ (iConfig.getParameter<
edm::InputTag> (
"BeamSpotTag")),
49 TrackTag_ (iConfig.getParameter<
edm::InputTag>(
"TrackTag")),
60 desc.
add<
bool>(
"FastAccept",
false);
61 desc.
add<
double>(
"MinLxySignificance",0.0);
62 desc.
add<
double>(
"MaxLxySignificance",0.0);
63 desc.
add<
double>(
"MaxNormalisedChi2",10.0);
64 desc.
add<
double>(
"MinVtxProbability",0.0);
65 desc.
add<
double>(
"MinCosinePointingAngle",-2.0);
66 desc.
add<
int>(
"triggerTypeDaughters",0);
70 descriptions.
add(
"hltDisplacedtktktkFilter", desc);
94 vertexBeamSpot = *recoBeamSpotHandle;
101 if(foundVertexColl) displacedVertexColl = *displacedVertexCollHandle;
115 bool triggered =
false;
118 for(
auto const &displacedVertex : displacedVertexColl){
120 if(displacedVertex.tracksSize() != 3){
121 edm::LogError(
"HLTDisplacedtktktkFilter") <<
"HLTDisplacedtktktkFilter: ERROR: the tktktk vertex must have exactly three tracks by definition. It now has n tracks = "<< displacedVertex.tracksSize() << std::endl;
125 float normChi2 = displacedVertex.normalizedChi2();
128 double vtxProb = 0.0;
129 if( (displacedVertex.chi2()>=0.0) && (displacedVertex.ndof()>0) ) vtxProb = TMath::Prob(displacedVertex.chi2(), displacedVertex.ndof() );
133 auto trackIt = displacedVertex.tracks_begin();
143 reco::RecoChargedCandidateCollection::const_iterator cand1;
144 reco::RecoChargedCandidateCollection::const_iterator cand2;
145 reco::RecoChargedCandidateCollection::const_iterator cand3;
148 for (
auto cand=trackcands->begin();
cand!=trackcands->end();
cand++) {
150 if(tkRef == vertextkRef1) {cand1 =
cand; iFoundRefs++;}
151 if(tkRef == vertextkRef2) {cand2 =
cand; iFoundRefs++;}
152 if(tkRef == vertextkRef3) {cand3 =
cand; iFoundRefs++;}
156 edm::LogError(
"HLTDisplacedtktktkFilter") <<
"HLTDisplacedtktktkFilter: ERROR: the tracks matched with the tktktk vertex tracks should be at least three by definition." << std::endl;
161 cand1->py() + cand2->py() + cand3->py(),
167 GlobalError err(verr.At(0,0), verr.At(1,0), verr.At(1,1), verr.At(2,0), verr.At(2,1), verr.At(2,2) );
169 GlobalPoint displacementFromBeamspot( -1*((vertexBeamSpot.
x0() - vpoint.x()) + (vpoint.z() - vertexBeamSpot.
z0()) * vertexBeamSpot.
dxdz()),
170 -1*((vertexBeamSpot.
y0() - vpoint.y())+ (vpoint.z() - vertexBeamSpot.
z0()) * vertexBeamSpot.
dydz()), 0);
172 float lxy = displacementFromBeamspot.perp();
173 float lxyerr =
sqrt(err.rerr(displacementFromBeamspot));
179 float cosAlpha = vperp.Dot(pperp)/(vperp.R()*pperp.R());
204 LogDebug(
"HLTDisplacedtktktkFilter") <<
" >>>>> Result of HLTDisplacedtktktkFilter is "<< triggered <<std::endl;
double z0() const
z coordinate
double maxNormalisedChi2_
bool getByToken(EDGetToken token, Handle< PROD > &result) const
double maxLxySignificance_
edm::Ref< RecoChargedCandidateCollection > RecoChargedCandidateRef
reference to an object in a collection of RecoChargedCandidate objects
math::Error< dimension >::type Error
covariance error matrix (3x3)
std::vector< Vertex > VertexCollection
collection of Vertex objects
~HLTDisplacedtktktkFilter() override
edm::EDGetTokenT< reco::BeamSpot > beamSpotToken_
double minLxySignificance_
bool hltFilter(edm::Event &, const edm::EventSetup &, trigger::TriggerFilterObjectWithRefs &filterproduct) const override
void addObject(int id, const reco::RecoEcalCandidateRef &ref)
setters for L3 collections: (id=physics type, and Ref<C>)
double dydz() const
dydz slope
double minCosinePointingAngle_
math::XYZPoint Point
point in the space
HLTDisplacedtktktkFilter(const edm::ParameterSet &)
ParameterDescriptionBase * add(U const &iLabel, T const &value)
double dxdz() const
dxdz slope
std::vector< RecoChargedCandidate > RecoChargedCandidateCollection
collectin of RecoChargedCandidate objects
edm::EDGetTokenT< reco::RecoChargedCandidateCollection > TrackToken_
static void makeHLTFilterDescription(edm::ParameterSetDescription &desc)
XYZVectorD XYZVector
spatial vector with cartesian internal representation
void addCollectionTag(const edm::InputTag &collectionTag)
collectionTags
void add(std::string const &label, ParameterSetDescription const &psetDescription)
const int triggerTypeDaughters_
double y0() const
y coordinate
double minVtxProbability_
edm::EDGetTokenT< reco::VertexCollection > DisplacedVertexToken_
double x0() const
x coordinate
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)