54 deltaPhiCut(cfg.getParameter<double>(
"deltaPhiCut")),
56 deltaRCut(cfg.getParameter<double>(
"deltaRCut")),
57 deltaZCut(cfg.getParameter<double>(
"deltaZCut")),
60 produces<TrajectorySeedCollection>();
80 auto result = std::make_unique<TrajectorySeedCollection>();
81 result->reserve(pInPos->size());
85 edm::LogInfo(
"ConversionSeedFilterCharge") <<
"New Event \t Pos " << pInPos->size() <<
" \t Neg " << pInNeg->size() << std::endl;
87 std::vector<int> inResult;
88 for (TrajectorySeedCollection::const_iterator iS1=pInPos->begin(); iS1!=pInPos->end(); ++iS1){
93 double cotTheta1 = 1/
tan(tsos1.globalMomentum().theta());
94 double r1 = tsos1.globalPosition().perp();
95 double z1 = tsos1.globalPosition().z();
99 for (TrajectorySeedCollection::const_iterator iS2=pInNeg->begin(); iS2!=pInNeg->end(); ++iS2){
105 double deltaCotTheta = fabs(cotTheta1-1/
tan(tsos2.globalMomentum().theta()));
106 double deltaR = fabs(r1-tsos2.globalPosition().perp());
107 double deltaZ = fabs(z1-tsos2.globalPosition().z());
116 edm::LogInfo(
"ConversionSeedFilterCharge") <<
"[SearchAmongSeeds] match in pos " << iS1-pInPos->begin() <<
" " << iS2-pInNeg->begin() << std::endl;
122 if (
std::find(inResult.begin(),inResult.end(),iS2-pInNeg->begin())==inResult.end()){
124 inResult.push_back(iS2-pInNeg->begin());
132 edm::LogInfo(
"ConversionSeedFilterCharge") <<
"\nNew Event : result size " <<
result->size() << std::endl;
constexpr double deltaPhi(double phi1, double phi2)
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
bool getByToken(EDGetToken token, Handle< PROD > &result) const
ConversionSeedFilterCharge(const edm::ParameterSet &)
Geom::Phi< T > phi() const
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
const Plane & surface() const
The nominal surface of the GeomDet.
EDGetTokenT< ProductType > consumes(edm::InputTag const &tag)
#define DEFINE_FWK_MODULE(type)
edm::EDGetTokenT< TrajectorySeedCollection > inputCollNeg
std::vector< TrajectorySeed > TrajectorySeedCollection
const uint32_t maxInputSeeds
Tan< T >::type tan(const T &t)
unsigned int detId() const
const double deltaCotThetaCut
void produce(edm::StreamID, edm::Event &, const edm::EventSetup &) const override
GlobalVector globalMomentum() const
const TrackerGeomDet * idToDet(DetId) const override
~ConversionSeedFilterCharge() override
edm::EDGetTokenT< TrajectorySeedCollection > inputCollPos
T const * product() const