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");
89 return region(*track);
111 TSCPBuilderNoMaterial tscpBuilder;
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 ) {
177 double deltaTheta = trackPerigeeErrors.
thetaError();
178 double theta = pTrack.theta();
179 double sin_theta =
sin(theta);
182 deta = theNsigmaEta*(1/fabs(sin_theta))*deltaTheta;
183 dphi = theNsigmaPhi*(trackPerigeeErrors.
phiError());
192 double region_dEta = 0;
193 double region_dPhi = 0;
194 double eta=0;
double phi=0;
197 float pt = fabs(mom.perp());
201 float acoeff_Phi = (thePhiRegionPar2 - thePhiRegionPar1)/5;
202 float acoeff_Eta = (theEtaRegionPar2 - theEtaRegionPar1)/5;
204 eta = theEtaRegionPar1 + (acoeff_Eta)*(mom.perp()-5.);
205 phi = thePhiRegionPar1 + (acoeff_Phi)*(mom.perp()-5.) ;
208 if ( pt > 10. && pt < 100. ) {
209 eta = theEtaRegionPar2;
210 phi = thePhiRegionPar2;
215 float acoeff_Phi = (thePhiRegionPar1 - thePhiRegionPar2)/900;
216 float acoeff_Eta = (theEtaRegionPar1 - theEtaRegionPar2)/900;
218 eta = theEtaRegionPar2 + (acoeff_Eta)*(mom.perp()-100.);
219 phi = thePhiRegionPar2 + (acoeff_Phi)*(mom.perp()-100.);
223 double region_dPhi1 =
min(phi,dphi);
224 double region_dEta1 =
min(eta,deta);
227 region_dPhi =
max(thePhiMin,region_dPhi1);
228 region_dEta =
max(theEtaMin,region_dEta1);
233 deltaZ =
max(theHalfZ,deltaZatVTX);
239 double minPt =
max(theTkEscapePt,mom.perp()*0.6);
243 if (useFixedRegion) {
244 region_dEta = theEtaFixed;
245 region_dPhi = thePhiFixed;
250 deltaZ, region_dEta, region_dPhi,
253 theMeasurementTrackerName);
255 LogDebug(
"MuonTrackingRegionBuilder")<<
"the region parameters are:\n"
256 <<
"\n dirVector: "<<dirVector
257 <<
"\n vertexPos: "<<vertexPos
258 <<
"\n minPt: "<<minPt
259 <<
"\n deltaR:"<<deltaR
260 <<
"\n deltaZ:"<<deltaZ
261 <<
"\n region_dEta:"<<region_dEta
262 <<
"\n region_dPhi:"<<region_dPhi
263 <<
"\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
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
double y0() const
y coordinate
PerigeeTrajectoryError ftsToPerigeeError(const FTS &originalFTS)
double x0() const
x coordinate