Skip to content

Commit

Permalink
fixed things (like getByToken and other comments)
Browse files Browse the repository at this point in the history
  • Loading branch information
ebrondol committed Jul 2, 2014
1 parent e316058 commit e944563
Show file tree
Hide file tree
Showing 6 changed files with 61 additions and 36 deletions.
Expand Up @@ -36,7 +36,7 @@ class DAFTrackProducerAlgorithm {

public:

DAFTrackProducerAlgorithm(const edm::ParameterSet& pset):conf_(pset){}
DAFTrackProducerAlgorithm(const edm::ParameterSet& conf);
~DAFTrackProducerAlgorithm() {}

/// Run the Final Fit taking TrackCandidates as input
Expand Down Expand Up @@ -91,7 +91,7 @@ class DAFTrackProducerAlgorithm {
int checkHits( Trajectory iInitTraj, const Trajectory iFinalTraj) const;

edm::ParameterSet conf_;

int minHits_;
};

#endif
7 changes: 3 additions & 4 deletions RecoTracker/TrackProducer/plugins/DAFTrackProducer.cc
Expand Up @@ -24,6 +24,7 @@ DAFTrackProducer::DAFTrackProducer(const edm::ParameterSet& iConfig):
setSrc( consumes<TrackCandidateCollection>(iConfig.getParameter<edm::InputTag>( "src" )),
consumes<reco::BeamSpot>(iConfig.getParameter<edm::InputTag>( "beamSpot" )),
consumes<MeasurementTrackerEvent>(iConfig.getParameter<edm::InputTag>( "MeasurementTrackerEvent") ));
src_ = consumes<TrajectoryCollection>(iConfig.getParameter<edm::InputTag>( "src" ));
setAlias( iConfig.getParameter<std::string>( "@module_label" ) );

//register your products
Expand Down Expand Up @@ -109,8 +110,7 @@ void DAFTrackProducer::getFromEvt(edm::Event& theEvent,edm::Handle<TrajectoryCol

//get the TrajectoryCollection from the event
//WARNING: src has always to be redefined in cfg file
edm::InputTag src_=getConf().getParameter<edm::InputTag>( "src" );
theEvent.getByLabel(src_,theTrajectoryCollection );
theEvent.getByToken(src_,theTrajectoryCollection );

//get the BeamSpot
edm::Handle<reco::BeamSpot> recoBeamSpotHandle;
Expand All @@ -125,8 +125,7 @@ void DAFTrackProducer::putInEvtTrajAnn(edm::Event& theEvent, TrajAnnealingCollec
outputTrajAnnColl->reserve(size);

for(unsigned int i = 0; i < trajannResults.size() ; i++){
// trajannResults.at(i).Debug();
outputTrajAnnColl->push_back(trajannResults.at(i));
outputTrajAnnColl->push_back(trajannResults[i]);
}

theEvent.put( outputTrajAnnColl );
Expand Down
3 changes: 3 additions & 0 deletions RecoTracker/TrackProducer/plugins/DAFTrackProducer.h
Expand Up @@ -28,7 +28,10 @@ class DAFTrackProducer : public KfTrackProducerBase, public edm::EDProducer {
void getFromEvt(edm::Event&, edm::Handle<TrajectoryCollection>&, reco::BeamSpot&);
void putInEvtTrajAnn(edm::Event& theEvent, TrajAnnealingCollection & trajannResults,
std::auto_ptr<TrajAnnealingCollection>& selTrajAnn);

bool TrajAnnSaving_;
edm::EDGetToken src_;

};

#endif
25 changes: 18 additions & 7 deletions RecoTracker/TrackProducer/src/DAFTrackProducerAlgorithm.cc
Expand Up @@ -23,6 +23,12 @@
#include "DataFormats/TrackerRecHit2D/interface/TkCloner.h"
#include "TrackingTools/PatternTools/interface/TrajAnnealing.h"


DAFTrackProducerAlgorithm::DAFTrackProducerAlgorithm(const edm::ParameterSet& conf):
conf_(conf),
minHits_(conf.getParameter<int>("MinHits")){}


void DAFTrackProducerAlgorithm::runWithCandidate(const TrackingGeometry * theG,
const MagneticField * theMF,
const std::vector<Trajectory>& theTrajectoryCollection,
Expand All @@ -36,7 +42,7 @@ void DAFTrackProducerAlgorithm::runWithCandidate(const TrackingGeometry * theG,
TrajAnnealingCollection& trajann,
bool TrajAnnSaving_) const
{
edm::LogInfo("TrackProducer") << "Number of Trajectories: " << theTrajectoryCollection.size() << "\n";
LogDebug("DAFTrackProducerAlgorithm") << "Number of Trajectories: " << theTrajectoryCollection.size() << "\n";
int cont = 0;

//running on src trajectory collection
Expand All @@ -51,7 +57,7 @@ void DAFTrackProducerAlgorithm::runWithCandidate(const TrackingGeometry * theG,
//no need to have std::vector<Trajectory> vtraj !
if ( (*ivtraj).isValid() ){

edm::LogInfo("TrackProducer") << "The trajectory is valid. \n";
LogDebug("DAFTrackProducerAlgorithm") << "The trajectory is valid. \n";

//getting the MultiRecHit collection and the trajectory with a first fit-smooth round
std::pair<TransientTrackingRecHit::RecHitContainer, TrajectoryStateOnSurface> hits =
Expand Down Expand Up @@ -96,9 +102,9 @@ void DAFTrackProducerAlgorithm::runWithCandidate(const TrackingGeometry * theG,
//in order to remove tracks with too many outliers.

//std::vector<Trajectory> filtered;
//filter(theFitter, vtraj, conf_.getParameter<int>("MinHits"), filtered, builder);
//filter(theFitter, vtraj, minHits_, filtered, builder);

if(currentTraj.foundHits() >= conf_.getParameter<int>("MinHits")) {
if(currentTraj.foundHits() >= minHits_) {

bool ok = buildTrack(currentTraj, algoResults, ndof, bs) ;
if(ok) cont++;
Expand All @@ -114,7 +120,7 @@ void DAFTrackProducerAlgorithm::runWithCandidate(const TrackingGeometry * theG,

} //end run on track collection

LogDebug("TrackProducer") << "Number of Tracks found: " << cont << "\n";
LogDebug("DAFTrackProducerAlgorithm") << "Number of Tracks found: " << cont << "\n";

}
/*------------------------------------------------------------------------------------------------------*/
Expand Down Expand Up @@ -335,8 +341,13 @@ int DAFTrackProducerAlgorithm::checkHits( Trajectory iInitTraj, const Trajectory
int nSame = 0;
int ihit = 0;

if ( initmeasurements.empty() || finalmeasurements.empty() || initmeasurements.size() != finalmeasurements.size() ){
LogDebug("DAFTrackProducerAlgorithm") << "Initial or Final Trajectory empty or with different size.";
if( initmeasurements.empty() || finalmeasurements.empty() ){
LogDebug("DAFTrackProducerAlgorithm") << "Initial or Final Trajectory empty.";
return 0;
}

if( initmeasurements.size() != finalmeasurements.size() ) {
LogDebug("DAFTrackProducerAlgorithm") << "Initial and Final Trajectory have different size.";
return 0;
}

Expand Down
17 changes: 7 additions & 10 deletions TrackingTools/PatternTools/interface/TrajAnnealing.h
@@ -1,17 +1,14 @@
/** \class TrajAnnealing
* Allow to save all the traj info
* for each annealing cycle
* suitable for algorithm like DAF
*
* \author in May 2014 by brondolin
*/

#ifndef DataFormats_TrajAnnealing_h
#define DataFormats_TrajAnnealing_h

#include <vector>

//class
/** This class allow to save all the traj info
* for each annealing cycle
* suitable for algorithm like DAF
* (not used in default options)
*/

class TrajAnnealing
{
public:
Expand All @@ -21,7 +18,7 @@ class TrajAnnealing
theWeights(){}
virtual ~TrajAnnealing(){}

TrajAnnealing( Trajectory, float );
TrajAnnealing( const Trajectory&, float );

float getAnnealing() const { return annealing_; }
Trajectory getTraj() const { return traj_; }
Expand Down
41 changes: 28 additions & 13 deletions TrackingTools/PatternTools/src/TrajAnnealing.cc
Expand Up @@ -3,25 +3,40 @@
#include "TrackingTools/PatternTools/interface/TrajectoryMeasurement.h"
#include "DataFormats/TrackerRecHit2D/interface/SiTrackerMultiRecHit.h"

TrajAnnealing::TrajAnnealing( Trajectory traj, float ann ){
TrajAnnealing::TrajAnnealing( const Trajectory& traj, float ann ){
traj_ = traj;
annealing_ = ann;

std::vector<TrajectoryMeasurement> measurements = traj_.measurements();
std::vector<TrajectoryMeasurement> vmeas = traj_.measurements();
std::vector<TrajectoryMeasurement>::reverse_iterator imeas;

for (imeas = vmeas.rbegin(); imeas != vmeas.rend(); imeas++){
theHits_.push_back(imeas->recHit());
if (imeas->recHit()->isValid()){
SiTrackerMultiRecHit const & mHit = dynamic_cast<SiTrackerMultiRecHit const &>(*imeas->recHit());
std::vector<const TrackingRecHit*> components = mHit.recHits();
int iComp = 0;
for(std::vector<const TrackingRecHit*>::const_iterator iter2 = components.begin(); iter2 != components.end(); iter2++, iComp++){
theWeights.push_back(mHit.weight(iComp));
const Trajectory::DataContainer& measurements = traj_.measurements();
if( measurements.size() > 2 ){

Trajectory::DataContainer::const_iterator ibegin,iend;
int increment(0);
if( traj.direction() == alongMomentum ){
ibegin = measurements.begin();
iend = measurements.end();
increment = 1;
} else {
ibegin = measurements.end();
iend = measurements.begin();
increment = -1;
}

for( Trajectory::DataContainer::const_iterator imeas = ibegin; imeas != iend; imeas += increment ){
theHits_.push_back(imeas->recHit());
if (imeas->recHit()->isValid()){
SiTrackerMultiRecHit const & mHit = dynamic_cast<SiTrackerMultiRecHit const &>(*imeas->recHit());
std::vector<const TrackingRecHit*> components = mHit.recHits();
int iComp = 0;
for(std::vector<const TrackingRecHit*>::const_iterator iter = components.begin();
iter != components.end(); iter++, iComp++){
theWeights.push_back(mHit.weight(iComp));
}
}
}

}

}

std::pair<float, std::vector<float> > TrajAnnealing::getAnnealingWeight( const TrackingRecHit& aRecHit ) const {
Expand Down

0 comments on commit e944563

Please sign in to comment.