57 theEtaRegionPar1 = par.
getParameter<
double>(
"EtaR_UpperLimit_Par1");
58 theEtaRegionPar2 = par.
getParameter<
double>(
"EtaR_UpperLimit_Par2");
59 thePhiRegionPar1 = par.
getParameter<
double>(
"PhiR_UpperLimit_Par1");
60 thePhiRegionPar2 = par.
getParameter<
double>(
"PhiR_UpperLimit_Par2");
63 useFixedRegion = par.
getParameter<
bool>(
"UseFixedRegion");
87 return region(*track);
109 TSCPBuilderNoMaterial tscpBuilder;
113 LogDebug(
"MuonTrackingRegionBuilder")<<
"from state: "<<muFTS;
121 if ( staTrack.
p() > 1.5 ) {
127 double deltaZatVTX = 0.0;
131 bool bsHandleFlag = theEvent->getByLabel(theBeamSpotTag, bsHandle);
135 if ( bsHandleFlag && !useVertex ) {
141 bool vtxHandleFlag = theEvent->getByLabel(theVertexCollTag,vertexCollection);
143 if ( vtxHandleFlag && !vertexCollection->empty() ) {
145 reco::VertexCollection::const_iterator vtx = vertexCollection->begin();
146 vertexPos =
GlobalPoint(vtx->x(),vtx->y(),vtx->z());
148 deltaZatVTX = vtx->zError() * theNsigmaDz;
160 if ( bsHandleFlag ) {
175 double deltaTheta = trackPerigeeErrors.
thetaError();
176 double theta = pTrack.theta();
177 double sin_theta =
sin(theta);
180 deta = theNsigmaEta*(1/fabs(sin_theta))*deltaTheta;
181 dphi = theNsigmaPhi*(trackPerigeeErrors.
phiError());
190 double region_dEta = 0;
191 double region_dPhi = 0;
192 double eta=0;
double phi=0;
195 float pt = fabs(mom.perp());
199 float acoeff_Phi = (thePhiRegionPar2 - thePhiRegionPar1)/5;
200 float acoeff_Eta = (theEtaRegionPar2 - theEtaRegionPar1)/5;
202 eta = theEtaRegionPar1 + (acoeff_Eta)*(mom.perp()-5.);
203 phi = thePhiRegionPar1 + (acoeff_Phi)*(mom.perp()-5.) ;
206 if ( pt > 10. && pt < 100. ) {
207 eta = theEtaRegionPar2;
208 phi = thePhiRegionPar2;
213 float acoeff_Phi = (thePhiRegionPar1 - thePhiRegionPar2)/900;
214 float acoeff_Eta = (theEtaRegionPar1 - theEtaRegionPar2)/900;
216 eta = theEtaRegionPar2 + (acoeff_Eta)*(mom.perp()-100.);
217 phi = thePhiRegionPar2 + (acoeff_Phi)*(mom.perp()-100.);
221 double region_dPhi1 =
min(phi,dphi);
222 double region_dEta1 =
min(eta,deta);
225 region_dPhi =
max(thePhiMin,region_dPhi1);
226 region_dEta =
max(theEtaMin,region_dEta1);
231 deltaZ =
max(theHalfZ,deltaZatVTX);
237 double minPt =
max(theTkEscapePt,mom.perp()*0.6);
241 if (useFixedRegion) {
242 region_dEta = theEtaFixed;
243 region_dPhi = thePhiFixed;
248 deltaZ, region_dEta, region_dPhi,
251 theMeasurementTrackerName);
253 LogDebug(
"MuonTrackingRegionBuilder")<<
"the region parameters are:\n"
254 <<
"\n dirVector: "<<dirVector
255 <<
"\n vertexPos: "<<vertexPos
256 <<
"\n minPt: "<<minPt
257 <<
"\n deltaR:"<<deltaR
258 <<
"\n deltaZ:"<<deltaZ
259 <<
"\n region_dEta:"<<region_dEta
260 <<
"\n region_dPhi:"<<region_dPhi
261 <<
"\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