33 #include "Math/GenVector/VectorUtil.h"
44 for(TrajectorySeedCollection::const_iterator it = seeds.begin(); it != seeds.end(); it++){
45 if(it->nHits() != seed.
nHits())
continue;
59 theNavigationSchool_(0),
60 theOutInSeedFinder_(0),
61 theOutInTrackFinder_(0),
62 theInOutSeedFinder_(0),
63 theInOutTrackFinder_(0)
65 LogDebug(
"SoftConversionTrackCandidateProducer") <<
"SoftConversionTrackCandidateProducer CTOR " <<
"\n";
99 edm::LogInfo(
"SoftConversionTrackCandidateProducer") <<
" get magnetic field" <<
"\n";
106 edm::LogInfo(
"SoftConversionTrackCandidateProducer") <<
" get the OutInSeedFinder" <<
"\n";
110 edm::LogInfo(
"SoftConversionTrackCandidateProducer") <<
" get the OutInTrackFinder" <<
"\n";
114 edm::LogInfo(
"SoftConversionTrackCandidateProducer") <<
" get the InOutSeedFinder" <<
"\n";
118 edm::LogInfo(
"SoftConversionTrackCandidateProducer") <<
" get the InOutTrackFinder" <<
"\n";
134 edm::LogInfo(
"SoftConversionTrackCandidateProducer") <<
"SoftConversionTrackCandidateProducer Analyzing event number: " << theEvent.
id() <<
" Global Counter " <<
nEvt_ <<
"\n";
136 std::cout <<
"SoftConversionTrackCandidateProducer Analyzing event number: " << theEvent.
id() <<
" Global Counter " <<
nEvt_ <<
"\n";
153 std::vector<edm::Ptr<reco::CaloCluster> > vecOfClusterRefForOutIn;
154 std::vector<edm::Ptr<reco::CaloCluster> > vecOfClusterRefForInOut;
160 if (!clusterBarrelHandle.isValid()) {
165 buildCollections(clusterBarrelHandle, *outInTrackCandidate_p, *inOutTrackCandidate_p, vecOfClusterRefForOutIn, vecOfClusterRefForInOut);
172 if (!clusterEndcapHandle.
isValid()) {
177 buildCollections(clusterEndcapHandle, *outInTrackCandidate_p, *inOutTrackCandidate_p, vecOfClusterRefForOutIn, vecOfClusterRefForInOut);
186 fillerOI.
insert(refprodOutInTrackC, vecOfClusterRefForOutIn.begin(), vecOfClusterRefForOutIn.end());
189 fillerIO.
insert(refprodInOutTrackC, vecOfClusterRefForInOut.begin(), vecOfClusterRefForInOut.end());
208 int nClusters = (int) clusterHandle->size();
212 for(
int iCluster=0; iCluster<nClusters; iCluster++){
215 GlobalPoint gp(position.x(),position.y(),position.z());
221 for(TrajectorySeedCollection::const_iterator it = oISeeds.begin(); it != oISeeds.end(); it++){
222 totalOISeeds.push_back(*it);
228 for(
int jCluster=iCluster; jCluster<nClusters; jCluster++){
232 GlobalPoint gp2(position2.x(),position2.y(),position2.z());
233 double dEta =
std::abs(position.Eta() - position2.Eta());
234 if(dEta > 0.1)
continue;
236 double dPhi =
std::abs(ROOT::Math::VectorUtil::DeltaPhi(position, position2));
237 if(dPhi > 0.5)
continue;
245 for(TrajectorySeedCollection::const_iterator it = iOSeeds.begin(); it != iOSeeds.end(); it++){
246 totalIOSeeds.push_back(*it);
259 for(std::vector<Trajectory>::iterator it = tempTrj.begin(); it!= tempTrj.end(); it++){
260 oIFilteredSeeds.push_back(it->seed());
266 for(std::vector<Trajectory>::iterator it = tempTrj.begin(); it!= tempTrj.end(); it++){
267 iOFilteredSeeds.push_back(it->seed());
272 totalOISeeds.clear();
273 totalIOSeeds.clear();
278 for(
int iCluster=0; iCluster<nClusters; iCluster++){
281 GlobalPoint gp(position.x(),position.y(),position.z());
287 for(TrajectorySeedCollection::iterator it = oISeeds_all.begin(); it != oISeeds_all.end(); it++){
288 if(
IsGoodSeed(oIFilteredSeeds,*it)) oISeeds.push_back(*it);
291 if(oISeeds.size() == 0)
continue;
295 int nOITrj = (int) theOutInTracks.size();
296 for(
int itrj=0; itrj < nOITrj; itrj++) vecRecOI.push_back( clusterRefOutIn );
298 for(
int jCluster=iCluster; jCluster<nClusters; jCluster++){
302 GlobalPoint gp2(position2.x(),position2.y(),position2.z());
303 double dEta =
std::abs(position.Eta() - position2.Eta());
304 if(dEta > 0.1)
continue;
306 double dPhi =
std::abs(ROOT::Math::VectorUtil::DeltaPhi(position, position2));
307 if(dPhi > 0.5)
continue;
315 for(TrajectorySeedCollection::iterator it = iOSeeds_all.begin(); it != iOSeeds_all.end(); it++){
316 if(
IsGoodSeed(iOFilteredSeeds,*it)) iOSeeds.push_back(*it);
319 if(iOSeeds.size() == 0)
continue;
323 int nIOTrj = (int) theInOutTracks.size();
324 for(
int itrj=0; itrj < nIOTrj; itrj++) vecRecIO.push_back( clusterRefInOut );
void buildCollections(const edm::Handle< edm::View< reco::CaloCluster > > &clusterHandle, TrackCandidateCollection &outInTracks, TrackCandidateCollection &inOutTracks, std::vector< edm::Ptr< reco::CaloCluster > > &vecRecOI, std::vector< edm::Ptr< reco::CaloCluster > > &vecRecIO)
T getParameter(std::string const &) const
void setTracks(std::vector< Trajectory > in)
InOutConversionTrackFinder * theInOutTrackFinder_
~SoftConversionTrackCandidateProducer()
LocalPoint position() const
Local x and y position coordinates.
std::vector< TrackCandidate > TrackCandidateCollection
void insert(const H &h, I begin, I end)
OutInConversionSeedFinder * theOutInSeedFinder_
edm::InputTag clusterBarrelCollection_
TrajectorySeedCollection seeds()
static int position[TOTALCHAMBERS][3]
std::string OutInTrackClusterAssociationCollection_
virtual std::vector< Trajectory > tracks(const TrajectorySeedCollection seeds, TrackCandidateCollection &candidate) const
T mag() const
The vector magnitude. Equivalent to sqrt(vec.mag2())
virtual void endRun(edm::Run &r, edm::EventSetup const &es)
const NavigationSchool * theNavigationSchool_
double dPhi(double phi1, double phi2)
std::vector< TrajectorySeed > TrajectorySeedCollection
OrphanHandle< PROD > put(std::auto_ptr< PROD > product)
Put a new product.
void setEvent(const edm::Event &e)
virtual void makeSeeds(const edm::Handle< edm::View< reco::CaloCluster > > &allBc) const
LocalVector momentum() const
Momentum vector in the local frame.
edm::InputTag clusterEndcapCollection_
virtual void produce(edm::Event &evt, const edm::EventSetup &es)
std::string OutInTrackCandidateCollection_
std::string InOutTrackClusterAssociationCollection_
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
OutInConversionTrackFinder * theOutInTrackFinder_
const int surfaceSide() const
PTrajectoryStateOnDet const & startingState() const
XYZPointD XYZPoint
point in space with cartesian internal representation
void setEvent(const edm::Event &e)
const unsigned int detId() const
T const * product() const
virtual void setCandidate(float e, GlobalPoint pos) const
bool IsGoodSeed(const TrajectorySeedCollection &seeds, const TrajectorySeed &seed)
void setEventSetup(const edm::EventSetup &es)
Initialize EventSetup objects at each event.
void setEventSetup(const edm::EventSetup &es)
Initialize EventSetup objects at each event.
virtual std::vector< Trajectory > tracks(const TrajectorySeedCollection seeds, TrackCandidateCollection &candidates) const
unsigned int nHits() const
SoftConversionTrackCandidateProducer(const edm::ParameterSet &ps)
virtual void beginRun(edm::Run &r, edm::EventSetup const &es)
std::string InOutTrackCandidateCollection_
InOutConversionSeedFinder * theInOutSeedFinder_
void setEventSetup(const edm::EventSetup &es)
Initialize EventSetup objects at each event.
virtual void makeSeeds(const edm::Handle< edm::View< reco::CaloCluster > > &allBc) const
const LocalTrajectoryParameters & parameters() const