75 deltaPhiCut(cfg.getParameter<double>(
"deltaPhiCut")),
77 deltaRCut(cfg.getParameter<double>(
"deltaRCut")),
78 deltaZCut(cfg.getParameter<double>(
"deltaZCut")),
82 produces<TrajectorySeedCollection>();
103 auto result = std::make_unique<TrajectorySeedCollection>();
108 result->insert(
result->end(),pInPos->begin(),pInPos->end());
109 result->insert(
result->end(),pInNeg->begin(),pInNeg->end());
114 std::vector<bool> idxPosColl1(pInPos->size(),
false);
115 std::vector<bool> idxPosColl2(pInNeg->size(),
false);
116 selectedColl.reserve(pInPos->size());
118 edm::LogInfo(
"ConversionSeedFilter") <<
"New Event \t Pos " << pInPos->size() <<
" \t Neg " << pInNeg->size() << std::endl;
124 if(trajTrackAssociations.
isValid()){
125 edm::LogInfo(
"ConversionSeedFilter") <<
"Reconstructed tracks " << trajTrackAssociations->
size() << std::endl;
139 result->insert(
result->end(),selectedColl.begin(),selectedColl.end());
143 edm::LogInfo(
"ConversionSeedFilter") <<
"\nNew Event : result size " <<
result->size()<< std::endl;
153 for (TrajectorySeedCollection::const_iterator iS1=pInPos->begin(); iS1!=pInPos->end(); ++iS1){
154 bool pushed1 =
false;
159 for (TrajectorySeedCollection::const_iterator iS2=pInNeg->begin(); iS2!=pInNeg->end(); ++iS2){
165 edm::LogInfo(
"ConversionSeedFilter") <<
"[SearchAmongSeeds] match in pos " << iS1-pInPos->begin() <<
" " << iS2-pInNeg->begin() << std::endl;
167 idxPosColl1[iS1-pInPos->begin()]=
true;
168 selectedColl.push_back(*iS1);
171 if(!idxPosColl2[iS2-pInNeg->begin()]){
172 selectedColl.push_back(*iS2);
173 idxPosColl2[iS2-pInNeg->begin()]=
true;
183 for (TrajectorySeedCollection::const_iterator iS1=pInSeed->begin(); iS1!=pInSeed->end(); ++iS1){
185 if(idxPosColl[iS1-pInSeed->begin()])
191 for (reco::TrackCollection::const_iterator iS2=pInTk->begin(); iS2!=pInTk->end(); ++iS2){
197 edm::LogInfo(
"ConversionSeedFilter") <<
"[SearchAmongTracks] match in pos " << iS1-pInSeed->begin() << std::endl;
198 idxPosColl[iS1-pInSeed->begin()]=
true;
199 selectedColl.push_back(*iS1);
209 for (TrajectorySeedCollection::const_iterator iS1=pInSeed->begin(); iS1!=pInSeed->end(); ++iS1){
211 if(idxPosColl[iS1-pInSeed->begin()])
221 edm::LogInfo(
"ConversionSeedFilter") <<
"[SearchAmongTrajectories] match seed in pos " << iS1-pInSeed->begin() <<
" of " << pInSeed->size() <<
" seed charge " << iS1->startingState().parameters().charge()<<std::endl;
222 idxPosColl[iS1-pInSeed->begin()]=
true;
223 selectedColl.push_back(*iS1);
254 double deltaCotTheta = fabs( vars1[1]-vars2[1] );
255 double deltaR = fabs( vars1[2]-vars2[2] );
256 double deltaZ = fabs( vars1[3]-vars2[3] );
constexpr double deltaPhi(double phi1, double phi2)
GlobalPoint toGlobal(const Point2DBase< Scalar, LocalTag > lp) const
void getKine(const TrajectoryStateOnSurface &tsos, double *vars)
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
friend struct const_iterator
const_iterator end() const
last iterator over the map (read only)
edm::EDGetTokenT< TrajectorySeedCollection > inputCollSeedNeg
bool getByToken(EDGetToken token, Handle< PROD > &result) const
LocalPoint position() const
Local x and y position coordinates.
Geom::Phi< T > phi() const
std::vector< Track > TrackCollection
collection of Tracks
GlobalPoint globalPosition() const
TrajectoryMeasurement const & closestMeasurement(GlobalPoint) const
const Plane & surface() const
The nominal surface of the GeomDet.
edm::EDGetTokenT< TrajectorySeedCollection > inputCollSeedPos
Geom::Theta< T > theta() const
edm::EDGetTokenT< TrajTrackAssociationCollection > inputTrajectory
void SearchAmongSeeds(const TrajectorySeedCollection *pInPos, const TrajectorySeedCollection *pInNeg, TrajectorySeedCollection &selectedColl, std::vector< bool > &idxPosColl1, std::vector< bool > &idxPosColl2)
TrajectoryStateOnSurface getTSOS(const TrajectorySeed &ts)
#define DEFINE_FWK_MODULE(type)
std::vector< TrajectorySeed > TrajectorySeedCollection
void SearchAmongTrajectories(const TrajectorySeedCollection *pInSeed, const Trajectory *InTj, TrajectorySeedCollection &selectedColl, std::vector< bool > &idxPosColl)
Tan< T >::type tan(const T &t)
unsigned int detId() const
ConversionSeedFilter(const edm::ParameterSet &)
void produce(edm::Event &, const edm::EventSetup &) override
edm::ESHandle< MagneticField > theMF
bool isCompatible(double *vars1, double *vars2)
~ConversionSeedFilter() override
PTrajectoryStateOnDet const & startingState() const
size_type size() const
map size
T const * product() const
GlobalVector globalMomentum() const
const TrackerGeomDet * idToDet(DetId) const override
void SearchAmongTracks(const TrajectorySeedCollection *pInSeed, const reco::TrackCollection *pInTk, TrajectorySeedCollection &selectedColl, std::vector< bool > &idxPosColl)
int charge() const
track electric charge
TrajectoryStateOnSurface const & updatedState() const
const_iterator begin() const
first iterator over the map (read only)
edm::ESHandle< TrackerGeometry > theG
T const * product() const
const LocalTrajectoryParameters & parameters() const