52 return std::make_unique<Count>();
56 static void globalEndJob(
Count const* iCount);
80 if(type ==
"Default") theTrackTransformer = std::make_unique<TrackTransformer>(trackTransformerParam);
81 else if(type ==
"GlobalCosmicMuonsForAlignment") theTrackTransformer = std::make_unique<TrackTransformerForGlobalCosmicMuons>(trackTransformerParam);
82 else if(type ==
"CosmicMuonsForAlignment") theTrackTransformer = std::make_unique<TrackTransformerForCosmicMuons>(trackTransformerParam);
85 <<
"The selected algorithm does not exist" 87 <<
"Possible choices are:" 89 <<
"Type = [Default, GlobalCosmicMuonsForAlignment, CosmicMuonsForAlignment]";
92 produces<vector<Trajectory> >(
"Refitted");
93 produces<TrajTrackAssociationCollection>(
"Refitted");
107 LogWarning(metname) <<
"During the refit there were " 110 LogTrace(metname) <<
"Refit of the tracks done without any failure";
121 theTrackTransformer->setServices(setup);
124 unique_ptr<vector<Trajectory> > trajectoryCollection(
new vector<Trajectory>);
128 =
event.getRefBeforePut<vector<Trajectory> >(
"Refitted");
132 event.getByToken(theTracksToken, tracks);
141 for (reco::TrackCollection::const_iterator newTrack = tracks->begin();
142 newTrack != tracks->end(); ++newTrack) {
144 ++(globalCache()->theNTracks);
146 vector<Trajectory> trajectoriesSM = theTrackTransformer->transform(*newTrack);
148 if(!trajectoriesSM.empty()){
150 trajectoryCollection->push_back(trajectoriesSM.front());
153 trajTrackMap->insert(
Ref<vector<Trajectory> >(trajectoryCollectionRefProd,trajectoryIndex++),
157 LogTrace(metname) <<
"Error in the Track refitting. This should not happen";
158 ++(globalCache()->theNFailures);
161 LogTrace(metname)<<
"Load the Trajectory Collection";
162 event.put(
move(trajectoryCollection),
"Refitted");
163 event.put(
move(trajTrackMap),
"Refitted");
T getParameter(std::string const &) const
virtual ~TracksToTrajectories()
Destructor.
std::atomic< int > theNFailures
const std::string metname
#define DEFINE_FWK_MODULE(type)
edm::EDGetTokenT< reco::TrackCollection > theTracksToken
def setup(process, global_tag, zero_tesla=False)
TracksToTrajectories(const edm::ParameterSet &, const Count *)
Constructor.
std::unique_ptr< TrackTransformerBase > theTrackTransformer
edm::AssociationMap< edm::OneToOne< std::vector< Trajectory >, reco::TrackCollection, unsigned short > > TrajTrackAssociationCollection
virtual void produce(edm::Event &, const edm::EventSetup &) override
Convert a reco::TrackCollection into std::vector<Trajectory>
static void globalEndJob(Count const *iCount)
static std::unique_ptr< Count > initializeGlobalCache(edm::ParameterSet const &)
ParameterSet const & parameterSet(Provenance const &provenance)
boost::remove_cv< typename boost::remove_reference< argument_type >::type >::type key_type
std::atomic< int > theNTracks