57 produces<ConvBremSeedCollection>();
72 LogDebug(
"ConvBremSeedProducerProducer")<<
"START event: "<<iEvent.
id().
event()
73 <<
" in run "<<iEvent.
id().
run();
99 thePfRecTrackCollection);
108 vector<pair< TrajectorySeed , pair<GlobalVector,float> > > unclean;
110 vector< vector< long int > > tripl;
118 for(
unsigned int ipft=0;ipft<PfRTkColl.size();ipft++){
120 LogDebug(
"ConvBremSeedProducerProducer")<<
"NEW GsfPFRecTRACK ";
126 float pfoutenergy=
sqrt((pfmass*pfmass)+pft->gsfTrackRef()->outerMomentum().Mag2());
128 pft->gsfTrackRef()->outerMomentum().y(),
129 pft->gsfTrackRef()->outerMomentum().z(),
132 pft->gsfTrackRef()->outerPosition().y(),
133 pft->gsfTrackRef()->outerPosition().z(),
137 theOutParticle.
setCharge(pft->gsfTrackRef()->charge());
143 vector<PFBrem> brem =(*pft).PFRecBrem();
144 vector<PFBrem>::iterator ib=brem.begin();
145 vector<PFBrem>::iterator ib_end=brem.end();
146 LogDebug(
"ConvBremSeedProducerProducer")<<
"NUMBER OF BREMS "<<brem.size();
149 for (;ib!=ib_end;++ib){
154 pft->trajectoryPoint(ib->indTrajPoint()).
position().x(),
155 pft->trajectoryPoint(ib->indTrajPoint()).
position().y(),
156 pft->trajectoryPoint(ib->indTrajPoint()).
position().z(),
160 if (pos.Rho()>80)
continue;
161 if ((pos.Rho()>5)&&(fabs(ib->SigmaDeltaP()/ib->DeltaP())>3))
continue;
162 if (fabs(ib->DeltaP())<3)
continue;
164 vector< vector< long int > >Idd;
180 if (!(cyliter->sensitive()))
continue;
190 if (&(*tkLayer)==0)
continue;
193 std::vector<DetWithState> compat
195 vector <long int>
temp;
196 if (compat.size()==0)
continue;
198 for (std::vector<DetWithState>::const_iterator
i=compat.begin();
i!=compat.end();
i++) {
200 long int detid=
i->first->geographicalId().rawId();
210 long int DetID=(DetMatch != rphirecHits->end())? detid:0;
212 if ((MDetMatch != matchedrecHits->end()) && !MDetMatch->empty()) {
213 long int pii = MDetMatch->begin()->monoHit()->geographicalId().rawId();
215 DetID=(CDetMatch != rphirecHits->end())? pii:0;
219 temp.push_back(DetID);
224 long int DetID=(DetMatch != pixelHits->end())? detid:0;
225 temp.push_back(DetID);
234 if(Idd.size()<2)
continue;
237 for (
unsigned int i=0;
i<Idd.size()-2;
i++){
238 for (
unsigned int i1=0;i1<Idd[
i].size();i1++){
239 for (
unsigned int i2=0;i2<Idd[
i+1].size();i2++){
240 for (
unsigned int i3=0;i3<Idd[
i+2].size();i3++){
241 if ((Idd[
i][i1]!=0) &&(Idd[
i+1][i2]!=0) &&(Idd[
i+2][i3]!=0) ){
242 vector<long int >
tmp;
243 tmp.push_back(Idd[
i][i1]); tmp.push_back(Idd[
i+1][i2]); tmp.push_back(Idd[
i+2][i3]);
246 for (
unsigned int iv=0;iv<tripl.size();iv++){
247 if((tripl[iv][0]==tmp[0])&&(tripl[iv][1]==tmp[1])&&(tripl[iv][2]==tmp[2])) newTrip=
false;
252 tripl.push_back(tmp);
261 float sineta_brem =sinh(eta_br);
268 for (
unsigned int i=0;
i<tripl.size();
i++){
272 if ((DetMatch1 == rphirecHits->end()) ||
273 (DetMatch2 == rphirecHits->end()) ||
274 (DetMatch3 == rphirecHits->end()) )
continue;
281 toGlobal(it1->localPosition());
287 toGlobal(it2->localPosition());
293 toGlobal(it3->localPosition());
300 float ene=
sqrt(gv_corr.mag2()+(pfmass*pfmass));
314 if (gv.
perp()<0.5)
continue;
316 if (tak1+tak2+tak3>2)
continue;
318 if (bgc==-1)
continue;
320 for (
unsigned int igcc=0; igcc<gc.size(); igcc++){
322 if (bgc==gc[igcc]) clTak=
true;
332 glob_hits.clear(); loc_hits.
clear();
343 for (
int ih=0;ih<3;ih++){
362 make_pair(gv_corr,ch)));
372 for (
unsigned int iu=0; iu<unclean.size();iu++){
380 LogDebug(
"ConvBremSeedProducerProducer")<<
"END";
445 std::vector< BarrelDetLayer*> barrelLayers =
447 LogDebug(
"FastTracker") <<
"Barrel DetLayer dump: ";
448 for (std::vector< BarrelDetLayer*>::const_iterator bl=barrelLayers.begin();
449 bl != barrelLayers.end(); ++bl) {
450 LogDebug(
"FastTracker")<<
"radius " << (**bl).specificSurface().radius();
453 std::vector< ForwardDetLayer*> posForwardLayers =
455 LogDebug(
"FastTracker") <<
"Positive Forward DetLayer dump: ";
456 for (std::vector< ForwardDetLayer*>::const_iterator fl=posForwardLayers.begin();
457 fl != posForwardLayers.end(); ++fl) {
459 << (**fl).surface().position().z()
461 << (**fl).specificSurface().innerRadius()
463 << (**fl).specificSurface().outerRadius();
466 const float rTolerance = 1.5;
467 const float zTolerance = 3.;
469 LogDebug(
"FastTracker")<<
"Dump of TrackerInteractionGeometry cylinders:";
475 LogDebug(
"FastTracker") <<
"Famos Layer no " <<
i->layerNumber()
476 <<
" is sensitive? " <<
i->sensitive()
477 <<
" pos " <<
i->surface().position();
478 if (!
i->sensitive())
continue;
485 for (std::vector< BarrelDetLayer*>::const_iterator
486 bl=barrelLayers.begin(); bl != barrelLayers.end(); ++bl) {
488 if (fabs( cyl->
radius() - (**bl).specificSurface().radius()) < rTolerance) {
492 LogDebug(
"FastTracker")<<
"Corresponding DetLayer found with radius "
493 << (**bl).specificSurface().radius();
499 LogError(
"FastTracker") <<
"FAILED to find a corresponding DetLayer!";
508 for (std::vector< ForwardDetLayer*>::const_iterator fl=posForwardLayers.begin();
509 fl != posForwardLayers.end(); ++fl) {
510 if (fabs( disk->
position().
z() - (**fl).surface().position().z()) < zTolerance) {
513 LogDebug(
"FastTracker") <<
"Corresponding DetLayer found with Z pos "
514 << (**fl).surface().position().z()
516 << (**fl).specificSurface().innerRadius()
518 << (**fl).specificSurface().outerRadius();
523 LogError(
"FastTracker") <<
"FAILED to find a corresponding DetLayer!";
555 if (istaken)
continue;
556 if (!((*ib)->isValid()))
continue;
563 pair<GlobalVector,float> > > unclean){
565 vector<bool> goodseed;
567 if (unclean.size()<2){
568 for (
unsigned int i=0;
i<unclean.size();
i++)
569 goodseed.push_back(
true);
572 for (
unsigned int i=0;
i<unclean.size();
i++)
573 goodseed.push_back(
true);
575 for (
unsigned int iu=0; iu<unclean.size()-1;iu++){
576 if (!goodseed[iu])
continue;
577 for (
unsigned int iu2=iu+1; iu2<unclean.size();iu2++){
578 if (!goodseed[iu])
continue;
579 if (!goodseed[iu2])
continue;
585 unsigned int shar =0;
586 for (;sh!=sh_end;++sh){
590 for (;sh2!=sh2_end;++sh2){
599 if (unclean[iu].
second.first.perp()<unclean[iu2].second.first.perp()) goodseed[iu]=
false;
600 else goodseed[iu2]=
false;
622 for (
unsigned int i =0;
i<pfc.size();
i++ ){
623 float tmp_ep=pfc[
i].energy()/bpg.
momentum().e();
627 float tmp_dr=
sqrt(
pow(tmp_phi,2)+
pow(tmp_eta,2));
628 bool isBet=(tmp_dr<dr);
629 if (sec) isBet=(tmp_phi<df);
630 if ((isBet)&&(tmp_ep>minep)&&(tmp_ep<10)){
638 if (sec) isBad= ((df>0.25) || (de>0.5));
const MagneticField * magfield_
void setCharge(float q)
set the MEASURED charge
T getParameter(std::string const &) const
EventNumber_t event() const
const GeometricSearchTracker * geomSearchTracker_
virtual const BoundSurface & surface() const =0
The surface of the GeometricSearchDet.
FTS stateAtVertex() const
std::vector< bool > sharedHits(std::vector< std::pair< TrajectorySeed, std::pair< GlobalVector, float > > >)
const TransientTrackingRecHitBuilder * hitBuilder_
ConvBremSeedProducer(const edm::ParameterSet &)
SiStripMatchedRecHit2DCollection::const_iterator MatDetMatch
const GlobalTrajectoryParameters & parameters() const
unsigned int layerNumber() const
Returns the layer number.
bool forward() const
Is the layer forward ?
virtual GlobalVector inTesla(const GlobalPoint &gp) const =0
Field value ad specified global point, in Tesla.
ROOT::Math::SMatrixIdentity AlgebraicMatrixID
const TrajectoryStateTransform * transformer_
Global3DPoint GlobalPoint
const PropagatorWithMaterial * propagator_
virtual SubDetector subDetector() const =0
The type of detector (PixelBarrel, PixelEndcap, TIB, TOB, TID, TEC, CSC, DT, RPCBarrel, RPCEndcap)
std::list< TrackerLayer >::const_iterator cylinderEnd() const
Returns the last pointer in the cylinder list.
int getSuccess() const
Has propagation been performed and was barrel or endcap reached ?
TrajectoryStateOnSurface makeTrajectoryState(const DetLayer *layer, const ParticlePropagator &pp, const MagneticField *field) const
ROOT::Math::SMatrix< double, 5, 5, ROOT::Math::MatRepSym< double, 5 > > AlgebraicSymMatrix55
data_type const * const_iterator
const_iterator end() const
Termination of iteration.
std::vector< ConvBremSeed > ConvBremSeedCollection
collectin of ConvBremSeed objects
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
virtual std::vector< DetWithState > compatibleDets(const TrajectoryStateOnSurface &startingState, const Propagator &prop, const MeasurementEstimator &est) const
static int position[TOTALCHAMBERS][3]
const_iterator begin() const
Initialize an iterator over the RefVector.
SiPixelRecHitCollection::const_iterator PiDetMatch
const KFUpdator * kfUpdator_
const TrackerInteractionGeometry * geometry_
const MagneticFieldMap * fieldMap_
U second(std::pair< T, U > const &p)
std::vector< BarrelDetLayer * > const & barrelLayers() const
XYZTLorentzVectorD XYZTLorentzVector
Lorentz vector with cylindrical internal representation using pseudorapidity.
const XYZTLorentzVector & momentum() const
the momentum fourvector
math::XYZVector B_
B field.
Scalar radius() const
Radius of the cylinder.
std::vector< GsfPFRecTrack > GsfPFRecTrackCollection
collection of GsfPFRecTrack objects
OrphanHandle< PROD > put(std::auto_ptr< PROD > product)
Put a new product.
recHitContainer::const_iterator const_iterator
virtual RecHitPointer build(const TrackingRecHit *p) const =0
build a tracking rechit from an existing rechit
GlobalVector momentum() const
double Y() const
y of vertex
double Z() const
z of vertex
void setPropagationConditions(const TrackerLayer &, bool firstLoop=true)
double charge() const
get the MEASURED charge
virtual const GeomDet * idToDet(DetId) const
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
bool propagateToEcalEntrance(bool first=true)
std::vector< const DetLayer * > layerMap_
GlobalPoint position() const
virtual TrajectoryStateOnSurface propagate(const TrajectoryStateOnSurface &tsos, const Plane &plane) const
std::vector< ConstRecHitPointer > ConstRecHitContainer
const XYZTLorentzVector & vertex() const
the vertex fourvector
virtual ReferenceCountingPointer< TangentPlane > tangentPlane(const GlobalPoint &) const =0
std::vector< ForwardDetLayer * > const & posForwardLayers() const
const DetLayer * detLayer(const TrackerLayer &layer, float zpos) const
int GoodCluster(BaseParticlePropagator bpg, const reco::PFClusterCollection &pfc, float minep, bool sec=false)
T const * product() const
std::list< TrackerLayer >::const_iterator cylinderBegin() const
Returns the first pointer in the cylinder list.
T const * product() const
double X() const
x of vertex
virtual void produce(edm::Event &, const edm::EventSetup &)
double getMagneticField() const
Get the magnetic field.
std::vector< std::vector< double > > tmp
TrajectoryStateOnSurface update(const TrajectoryStateOnSurface &, const TransientTrackingRecHit &) const
SiStripRecHit2DCollection::const_iterator StDetMatch
float outerRadius() const
The outer radius of the disk.
std::vector< PFCluster > PFClusterCollection
collection of PFCluster objects
float innerRadius() const
The inner radius of the disk.
bool isGsfTrack(TrackingRecHitRefVector, const TrackingRecHit *)
const TrackerGeometry * tracker_
TrackCharge charge() const
void initializeLayerMap()
The Signals That Services Can Subscribe To This is based on ActivityRegistry h
Helper function to determine trigger accepts.
const PositionType & position() const
virtual const BoundPlane & surface() const
The nominal surface of the GeomDet.
Power< A, B >::type pow(const A &a, const B &b)
virtual void beginRun(edm::Run &, const edm::EventSetup &)
math::XYZTLorentzVector XYZTLorentzVector