59 theEtaRegionPar1 = par.
getParameter<
double>(
"EtaR_UpperLimit_Par1");
60 theEtaRegionPar2 = par.
getParameter<
double>(
"EtaR_UpperLimit_Par2");
61 thePhiRegionPar1 = par.
getParameter<
double>(
"PhiR_UpperLimit_Par1");
62 thePhiRegionPar2 = par.
getParameter<
double>(
"PhiR_UpperLimit_Par2");
65 useFixedRegion = par.
getParameter<
bool>(
"UseFixedRegion");
79 theMeasurementTrackerName = par.
getParameter<std::string>(
"MeasurementTrackerName");
89 return region(*track);
115 LogDebug(
"MuonTrackingRegionBuilder")<<
"from state: "<<muFTS;
123 if ( staTrack.
p() > 1.5 ) {
129 double deltaZatVTX = 0.0;
133 bool bsHandleFlag = theEvent->getByLabel(theBeamSpotTag, bsHandle);
137 if ( bsHandleFlag && !useVertex ) {
143 bool vtxHandleFlag = theEvent->getByLabel(theVertexCollTag,vertexCollection);
145 if ( vtxHandleFlag && !vertexCollection->empty() ) {
147 reco::VertexCollection::const_iterator vtx = vertexCollection->begin();
148 vertexPos =
GlobalPoint(vtx->x(),vtx->y(),vtx->z());
150 deltaZatVTX = vtx->zError() * theNsigmaDz;
162 if ( bsHandleFlag ) {
178 double deltaTheta = trackPerigeeErrors.
thetaError();
180 double sin_theta =
sin(theta);
183 deta = theNsigmaEta*(1/fabs(sin_theta))*deltaTheta;
184 dphi = theNsigmaPhi*(trackPerigeeErrors.
phiError());
193 double region_dEta = 0;
194 double region_dPhi = 0;
195 double eta=0;
double phi=0;
198 float pt = fabs(mom.perp());
202 float acoeff_Phi = (thePhiRegionPar2 - thePhiRegionPar1)/5;
203 float acoeff_Eta = (theEtaRegionPar2 - theEtaRegionPar1)/5;
205 eta = theEtaRegionPar1 + (acoeff_Eta)*(mom.perp()-5.);
206 phi = thePhiRegionPar1 + (acoeff_Phi)*(mom.perp()-5.) ;
209 if ( pt > 10. && pt < 100. ) {
210 eta = theEtaRegionPar2;
211 phi = thePhiRegionPar2;
216 float acoeff_Phi = (thePhiRegionPar1 - thePhiRegionPar2)/900;
217 float acoeff_Eta = (theEtaRegionPar1 - theEtaRegionPar2)/900;
219 eta = theEtaRegionPar2 + (acoeff_Eta)*(mom.perp()-100.);
220 phi = thePhiRegionPar2 + (acoeff_Phi)*(mom.perp()-100.);
224 double region_dPhi1 =
min(phi,dphi);
225 double region_dEta1 =
min(eta,deta);
228 region_dPhi =
max(thePhiMin,region_dPhi1);
229 region_dEta =
max(theEtaMin,region_dEta1);
234 deltaZ =
max(theHalfZ,deltaZatVTX);
240 double minPt =
max(theTkEscapePt,mom.perp()*0.6);
244 if (useFixedRegion) {
245 region_dEta = theEtaFixed;
246 region_dPhi = thePhiFixed;
251 deltaZ, region_dEta, region_dPhi,
254 theMeasurementTrackerName);
256 LogDebug(
"MuonTrackingRegionBuilder")<<
"the region parameters are:\n"
257 <<
"\n dirVector: "<<dirVector
258 <<
"\n vertexPos: "<<vertexPos
259 <<
"\n minPt: "<<minPt
260 <<
"\n deltaR:"<<deltaR
261 <<
"\n deltaZ:"<<deltaZ
262 <<
"\n region_dEta:"<<region_dEta
263 <<
"\n region_dPhi:"<<region_dPhi
264 <<
"\n on demand parameter: "<<theOnDemand;
void build(const edm::ParameterSet &)
RectangularEtaPhiTrackingRegion * region(const reco::TrackRef &) const
define tracking region
double p() const
momentum vector magnitude
T getParameter(std::string const &) const
double z0() const
z coordinate
double thetaError() const
virtual void setEvent(const edm::Event &)
pass the Event to the algo at each event
Sin< T >::type sin(const T &t)
Global3DPoint GlobalPoint
Geom::Theta< T > theta() const
Geom::Theta< T > theta() const
const T & max(const T &a, const T &b)
MuonTrackingRegionBuilder(const edm::ParameterSet &)
constructor
How EventSelector::AcceptEvent() decides whether to accept an event for output otherwise it is excluding the probing of A single or multiple positive and the trigger will pass if any such matching triggers are PASS or EXCEPTION[A criterion thatmatches no triggers at all is detected and causes a throw.] A single negative with an expectation of appropriate bit checking in the decision and the trigger will pass if any such matching triggers are FAIL or EXCEPTION A wildcarded negative criterion that matches more than one trigger in the trigger but the state exists so we define the behavior If all triggers are the negative crieriion will lead to accepting the event(this again matches the behavior of"!*"before the partial wildcard feature was incorporated).The per-event"cost"of each negative criterion with multiple relevant triggers is about the same as!*was in the past
GlobalVector momentum() const
FTS const & trackStateAtPCA() const
double deltaR(double eta1, double eta2, double phi1, double phi2)
void init(const MuonServiceProxy *)
XYZVectorD XYZVector
spatial vector with cartesian internal representation
const math::XYZVector & innerMomentum() const
momentum vector at the innermost hit position
PerigeeTrajectoryError ftsToPerigeeError(const FTS &originalFTS) const
double y0() const
y coordinate
double x0() const
x coordinate