CMS 3D CMS Logo

List of all members | Public Member Functions | Private Member Functions | Private Attributes
MuonErrorMatrixAdjuster Class Reference

#include <MuonErrorMatrixAdjuster.h>

Inheritance diagram for MuonErrorMatrixAdjuster:
edm::EDProducer edm::ProducerBase edm::EDConsumerBase edm::ProductRegistryHelper

Public Member Functions

 MuonErrorMatrixAdjuster (const edm::ParameterSet &)
 constructor More...
 
 ~MuonErrorMatrixAdjuster () override
 destructor More...
 
- Public Member Functions inherited from edm::EDProducer
 EDProducer ()
 
SerialTaskQueueglobalLuminosityBlocksQueue ()
 
SerialTaskQueueglobalRunsQueue ()
 
ModuleDescription const & moduleDescription () const
 
 ~EDProducer () override
 
- Public Member Functions inherited from edm::ProducerBase
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
std::vector< edm::ProductResolverIndex > const & indiciesForPutProducts (BranchType iBranchType) const
 
 ProducerBase ()
 
std::vector< edm::ProductResolverIndex > const & putTokenIndexToProductResolverIndex () const
 
void registerProducts (ProducerBase *, ProductRegistry *, ModuleDescription const &)
 
std::function< void(BranchDescription const &)> registrationCallback () const
 used by the fwk to register list of products More...
 
void resolvePutIndicies (BranchType iBranchType, ModuleToResolverIndicies const &iIndicies, std::string const &moduleLabel)
 
 ~ProducerBase () noexcept(false) override
 
- Public Member Functions inherited from edm::EDConsumerBase
std::vector< ConsumesInfoconsumesInfo () const
 
void convertCurrentProcessAlias (std::string const &processName)
 Convert "@currentProcess" in InputTag process names to the actual current process name. More...
 
 EDConsumerBase ()
 
 EDConsumerBase (EDConsumerBase const &)=delete
 
 EDConsumerBase (EDConsumerBase &&)=default
 
ESProxyIndex const * esGetTokenIndices (edm::Transition iTrans) const
 
ProductResolverIndexAndSkipBit indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
void itemsToGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
std::vector< ProductResolverIndexAndSkipBit > const & itemsToGetFrom (BranchType iType) const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void modulesWhoseProductsAreConsumed (std::vector< ModuleDescription const * > &modules, ProductRegistry const &preg, std::map< std::string, ModuleDescription const * > const &labelsToDesc, std::string const &processName) const
 
EDConsumerBase const & operator= (EDConsumerBase const &)=delete
 
EDConsumerBaseoperator= (EDConsumerBase &&)=default
 
bool registeredToConsume (ProductResolverIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
ProductResolverIndexAndSkipBit uncheckedIndexFrom (EDGetToken) const
 
void updateLookup (BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet)
 
void updateLookup (eventsetup::ESRecordsToProxyIndices const &)
 
virtual ~EDConsumerBase () noexcept(false)
 

Private Member Functions

bool attachRecHits (const reco::Track &recotrack_orig, reco::Track &recotrack, reco::TrackExtra &trackextra, TrackingRecHitCollection &RHcol, const TrackerTopology &ttopo)
 attached rechits to the newly created reco::Track and reco::TrackExtra More...
 
void beginJob () override
 framework method More...
 
bool divide (reco::TrackBase::CovarianceMatrix &num_matrix, const reco::TrackBase::CovarianceMatrix &denom_matrix)
 divide the num_matrix (first argument) by second matrix, TERM by TERM More...
 
void endJob () override
 
reco::TrackBase::CovarianceMatrix fix_cov_matrix (const reco::TrackBase::CovarianceMatrix &error_matrix, const GlobalVector &momentum)
 return a corrected error matrix More...
 
reco::Track makeTrack (const reco::Track &recotrack_orig, const FreeTrajectoryState &PCAstate)
 create a corrected reco::Track from itself and trajectory state (redundant information) More...
 
reco::TrackExtramakeTrackExtra (const reco::Track &recotrack_orig, reco::Track &recotrack, reco::TrackExtraCollection &TEcol)
 create a track extra for the newly created recotrack, scaling the outer/inner measurment error matrix by the scale matrix recotrack/recotrack_orig More...
 
void multiply (reco::TrackBase::CovarianceMatrix &revised_matrix, const reco::TrackBase::CovarianceMatrix &scale_matrix)
 mutliply revised_matrix (first argument) by second matrix TERM by TERM More...
 
void produce (edm::Event &, const edm::EventSetup &) override
 
bool selectTrack (const reco::Track &recotrack_orig)
 make a selection on the reco:Track. (dummy for the moment) More...
 

Private Attributes

std::string theCategory
 log category: MuonErrorMatrixAdjuster More...
 
edm::ESHandle< MagneticFieldtheField
 hold on to the magnetic field More...
 
std::string theInstanceName
 instrance name of the created track collecion. rechit and trackextra have no instance name More...
 
MuonErrorMatrixtheMatrixProvider
 
edm::ParameterSet theMatrixProvider_pset
 holds the error matrix parametrization More...
 
edm::RefProd< TrackingRecHitCollectiontheRefprodRH
 get reference before put rechit to the event, in order to create edm::Ref More...
 
edm::RefProd< reco::TrackExtraCollectiontheRefprodTE
 get reference before put track extra to the event, in order to create edm::Ref More...
 
bool theRescale
 select the rescaling or replacing method to correct the error matrix More...
 
edm::Ref< TrackingRecHitCollection >::key_type theRHi
 
edm::Ref< reco::TrackExtraCollection >::key_type theTEi
 
edm::InputTag theTrackLabel
 input tag of the reco::Track collection to be corrected More...
 

Additional Inherited Members

- Public Types inherited from edm::EDProducer
typedef EDProducer ModuleType
 
- Public Types inherited from edm::ProducerBase
using ModuleToResolverIndicies = std::unordered_multimap< std::string, std::tuple< edm::TypeID const *, const char *, edm::ProductResolverIndex >>
 
typedef ProductRegistryHelper::TypeLabelList TypeLabelList
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 
- Static Public Member Functions inherited from edm::EDProducer
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 
static bool wantsGlobalLuminosityBlocks ()
 
static bool wantsGlobalRuns ()
 
static bool wantsStreamLuminosityBlocks ()
 
static bool wantsStreamRuns ()
 
- Protected Member Functions inherited from edm::EDConsumerBase
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
EDGetToken consumes (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken consumes (TypeToGet const &id, edm::InputTag const &tag)
 
ConsumesCollector consumesCollector ()
 Use a ConsumesCollector to gather consumes information from helper functions. More...
 
template<typename ProductType , BranchType B = InEvent>
void consumesMany ()
 
void consumesMany (const TypeToGet &id)
 
template<BranchType B>
void consumesMany (const TypeToGet &id)
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes ()
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes (ESInputTag const &tag)
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > mayConsume (edm::InputTag const &tag)
 
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 

Detailed Description

EDProducer which duplicatesa collection of track, adjusting their error matrix

track collection is retrieve from the event, duplicated, while the error matrix is corrected rechit are copied into a new collection track extra is also copied and error matrix are corrected by the same scale factors

Author
Jean-Roch Vlimant UCSB
Finn Rebassoo UCSB

Definition at line 45 of file MuonErrorMatrixAdjuster.h.

Constructor & Destructor Documentation

MuonErrorMatrixAdjuster::MuonErrorMatrixAdjuster ( const edm::ParameterSet iConfig)
explicit

constructor

Definition at line 19 of file MuonErrorMatrixAdjuster.cc.

References edm::ParameterSet::getParameter(), AlCaHLTBitMon_QueryRunRegistry::string, theCategory, theInstanceName, theMatrixProvider_pset, theRescale, and theTrackLabel.

20 {
21  theCategory="MuonErrorMatrixAdjuster";
22  theInstanceName = iConfig.getParameter<std::string>("instanceName");
23  //register your products
24  produces<reco::TrackCollection>( theInstanceName);
25  produces<TrackingRecHitCollection>();
26  produces<reco::TrackExtraCollection>();
27 
28  theTrackLabel = iConfig.getParameter<edm::InputTag>("trackLabel");
29  theRescale = iConfig.getParameter<bool>("rescale");
30 
31  theMatrixProvider_pset = iConfig.getParameter<edm::ParameterSet>("errorMatrix_pset");
32 }
T getParameter(std::string const &) const
std::string theInstanceName
instrance name of the created track collecion. rechit and trackextra have no instance name ...
edm::InputTag theTrackLabel
input tag of the reco::Track collection to be corrected
std::string theCategory
log category: MuonErrorMatrixAdjuster
edm::ParameterSet theMatrixProvider_pset
holds the error matrix parametrization
bool theRescale
select the rescaling or replacing method to correct the error matrix
MuonErrorMatrixAdjuster::~MuonErrorMatrixAdjuster ( )
override

destructor

Definition at line 35 of file MuonErrorMatrixAdjuster.cc.

36 {
37 
38  // do anything here that needs to be done at desctruction time
39  // (e.g. close files, deallocate resources etc.)
40 
41 }

Member Function Documentation

bool MuonErrorMatrixAdjuster::attachRecHits ( const reco::Track recotrack_orig,
reco::Track recotrack,
reco::TrackExtra trackextra,
TrackingRecHitCollection RHcol,
const TrackerTopology ttopo 
)
private

attached rechits to the newly created reco::Track and reco::TrackExtra

Definition at line 139 of file MuonErrorMatrixAdjuster.cc.

References reco::TrackBase::appendHitPattern(), edm::OwnVector< T, P >::push_back(), rpcPointValidation_cfi::recHit, reco::Track::recHitsBegin(), reco::Track::recHitsEnd(), reco::TrackExtraBase::setHits(), theRefprodRH, and theRHi.

Referenced by produce().

143  {
144  //loop over the hits of the original track
145  trackingRecHit_iterator recHit = recotrack_orig.recHitsBegin();
146  auto const firstHitIndex = theRHi;
147  for (; recHit!=recotrack_orig.recHitsEnd();++recHit){
148  //clone it. this is meandatory
149  TrackingRecHit * hit = (*recHit)->clone();
150 
151  //put it on the new track
152  recotrack.appendHitPattern(*hit, ttopo);
153  //copy them in the new collection
154  RHcol.push_back(hit);
155  ++theRHi;
156 
157  }//loop over original rechits
158  //do something with the trackextra
159  trackextra.setHits(theRefprodRH, firstHitIndex, theRHi-firstHitIndex);
160 
161  return true; //if nothing fails
162 }
void setHits(TrackingRecHitRefProd const &prod, unsigned firstH, unsigned int nH)
void push_back(D *&d)
Definition: OwnVector.h:290
edm::RefProd< TrackingRecHitCollection > theRefprodRH
get reference before put rechit to the event, in order to create edm::Ref
trackingRecHit_iterator recHitsBegin() const
Iterator to first hit on the track.
Definition: Track.h:109
bool appendHitPattern(const TrackingRecHit &hit, const TrackerTopology &ttopo)
append a single hit to the HitPattern
Definition: TrackBase.h:489
edm::Ref< TrackingRecHitCollection >::key_type theRHi
trackingRecHit_iterator recHitsEnd() const
Iterator to last hit on the track.
Definition: Track.h:114
void MuonErrorMatrixAdjuster::beginJob ( void  )
overrideprivatevirtual

framework method

Reimplemented from edm::EDProducer.

Definition at line 241 of file MuonErrorMatrixAdjuster.cc.

References theMatrixProvider, and theMatrixProvider_pset.

242 {
244 }
MuonErrorMatrix * theMatrixProvider
edm::ParameterSet theMatrixProvider_pset
holds the error matrix parametrization
bool MuonErrorMatrixAdjuster::divide ( reco::TrackBase::CovarianceMatrix num_matrix,
const reco::TrackBase::CovarianceMatrix denom_matrix 
)
private

divide the num_matrix (first argument) by second matrix, TERM by TERM

Definition at line 69 of file MuonErrorMatrixAdjuster.cc.

References mps_fire::i.

Referenced by makeTrackExtra().

69  {
70  //divide term by term the matrix
71  // the true type of the matrix is such that [i][j] is the same memory object as [j][i]: looping i:0-5, j:0-5 double multiply the terms
72  // need to loop only on i:0-5, j:i-5
73  for(int i = 0;i!=5;i++){for(int j = i;j!=5;j++){
74  if (denom_matrix(i,j)==0) return false;
75  num_matrix(i,j)/=denom_matrix(i,j);
76  }}
77  return true;
78 }
void MuonErrorMatrixAdjuster::endJob ( void  )
overrideprivatevirtual

Reimplemented from edm::EDProducer.

Definition at line 248 of file MuonErrorMatrixAdjuster.cc.

References theMatrixProvider.

248  {
250 }
MuonErrorMatrix * theMatrixProvider
reco::TrackBase::CovarianceMatrix MuonErrorMatrixAdjuster::fix_cov_matrix ( const reco::TrackBase::CovarianceMatrix error_matrix,
const GlobalVector momentum 
)
private

return a corrected error matrix

Definition at line 49 of file MuonErrorMatrixAdjuster.cc.

References MuonErrorMatrix::get(), multiply(), theMatrixProvider, and theRescale.

Referenced by makeTrack().

50 {
51  //CovarianceMatrix is template for SMatrix
52  reco::TrackBase::CovarianceMatrix revised_matrix( theMatrixProvider->get(momentum));
53 
54  if( theRescale){
55  //rescale old error matrix up by a factor
56  multiply(revised_matrix,error_matrix);
57  }
58  return revised_matrix;
59 }
CurvilinearTrajectoryError get(GlobalVector momentum, bool convolute=true)
main method to be used. Retrieve a 5x5 symetrical matrix according to parametrization of error or sca...
void multiply(reco::TrackBase::CovarianceMatrix &revised_matrix, const reco::TrackBase::CovarianceMatrix &scale_matrix)
mutliply revised_matrix (first argument) by second matrix TERM by TERM
MuonErrorMatrix * theMatrixProvider
bool theRescale
select the rescaling or replacing method to correct the error matrix
math::Error< dimension >::type CovarianceMatrix
5 parameter covariance matrix
Definition: TrackBase.h:77
reco::Track MuonErrorMatrixAdjuster::makeTrack ( const reco::Track recotrack_orig,
const FreeTrajectoryState PCAstate 
)
private

create a corrected reco::Track from itself and trajectory state (redundant information)

Definition at line 80 of file MuonErrorMatrixAdjuster.cc.

References ALCARECOTkAlJpsiMuMu_cff::charge, reco::TrackBase::charge(), vertices_cff::chi2, reco::TrackBase::chi2(), reco::TrackBase::covariance(), fix_cov_matrix(), LogDebug, FreeTrajectoryState::momentum(), reco::TrackBase::momentum(), ndof, reco::TrackBase::ndof(), reco::TrackBase::referencePoint(), and theCategory.

Referenced by produce().

81  {
82  //get the parameters of the track so I can reconstruct it
83  double chi2 = recotrack_orig.chi2();
84  double ndof = recotrack_orig.ndof();
85  const math::XYZPoint& refpos = recotrack_orig.referencePoint();
86  const math::XYZVector& mom = recotrack_orig.momentum();
87  int charge = recotrack_orig.charge();
88 
89  reco::TrackBase::CovarianceMatrix covariance_matrix = fix_cov_matrix(recotrack_orig.covariance(),PCAstate.momentum());
90 
91  LogDebug(theCategory)<<"chi2: "<<chi2
92  <<"\n ndof: "<<ndof
93  <<"\n refpos: "<<refpos
94  <<"\n mom: "<<mom
95  <<"\n charge: "<<charge
96  <<"\n covariance:\n"<<recotrack_orig.covariance()
97  <<"\n replaced by:\n"<<covariance_matrix;
98 
99  return reco::Track(chi2,ndof,refpos,mom,charge,covariance_matrix);
100 }
#define LogDebug(id)
const Point & referencePoint() const
Reference point on the track.
Definition: TrackBase.h:714
reco::TrackBase::CovarianceMatrix fix_cov_matrix(const reco::TrackBase::CovarianceMatrix &error_matrix, const GlobalVector &momentum)
return a corrected error matrix
const Vector & momentum() const
track momentum vector
Definition: TrackBase.h:708
std::string theCategory
log category: MuonErrorMatrixAdjuster
double chi2() const
chi-squared of the fit
Definition: TrackBase.h:582
double ndof() const
number of degrees of freedom of the fit
Definition: TrackBase.h:588
CovarianceMatrix covariance() const
return track covariance matrix
Definition: TrackBase.h:776
GlobalVector momentum() const
XYZVectorD XYZVector
spatial vector with cartesian internal representation
Definition: Vector3D.h:30
XYZPointD XYZPoint
point in space with cartesian internal representation
Definition: Point3D.h:12
int charge() const
track electric charge
Definition: TrackBase.h:600
math::Error< dimension >::type CovarianceMatrix
5 parameter covariance matrix
Definition: TrackBase.h:77
reco::TrackExtra * MuonErrorMatrixAdjuster::makeTrackExtra ( const reco::Track recotrack_orig,
reco::Track recotrack,
reco::TrackExtraCollection TEcol 
)
private

create a track extra for the newly created recotrack, scaling the outer/inner measurment error matrix by the scale matrix recotrack/recotrack_orig

Definition at line 102 of file MuonErrorMatrixAdjuster.cc.

References reco::TrackBase::covariance(), divide(), reco::Track::extra(), edm::Ref< C, T, F >::isNull(), multiply(), reco::Track::setExtra(), theCategory, theRefprodTE, and theTEi.

Referenced by produce().

104  {
105  //get the 5x5 matrix of recotrack/recotrack_orig
106  reco::TrackBase::CovarianceMatrix scale_matrix(recotrack.covariance());
107  if (!divide(scale_matrix,recotrack_orig.covariance())){
108  edm::LogError( theCategory)<<"original track error matrix has term ==0... skipping.";
109  return nullptr; }
110 
111  const reco::TrackExtraRef & trackExtra_orig = recotrack_orig.extra();
112  if (trackExtra_orig.isNull()) {
113  edm::LogError( theCategory)<<"original track has no track extra... skipping.";
114  return nullptr;}
115 
116  //copy the outer state. rescaling the error matrix
117  reco::TrackBase::CovarianceMatrix outerCov(trackExtra_orig->outerStateCovariance());
118  multiply(outerCov,scale_matrix);
119 
120  //copy the inner state, rescaling the error matrix
121  reco::TrackBase::CovarianceMatrix innerCov(trackExtra_orig->innerStateCovariance());
122  multiply(innerCov,scale_matrix);
123 
124  //put the trackExtra
125  TEcol.push_back(reco::TrackExtra (trackExtra_orig->outerPosition(), trackExtra_orig->outerMomentum(), true,
126  trackExtra_orig->innerPosition(), trackExtra_orig->innerMomentum(), true,
127  outerCov, trackExtra_orig->outerDetId(),
128  innerCov, trackExtra_orig->innerDetId(),
129  trackExtra_orig->seedDirection()));
130 
131  //add a reference to the trackextra on the track
133 
134  //return the reference to the last inserted then
135  return &(TEcol.back());
136 }
edm::RefProd< reco::TrackExtraCollection > theRefprodTE
get reference before put track extra to the event, in order to create edm::Ref
const TrackExtraRef & extra() const
reference to "extra" object
Definition: Track.h:194
std::string theCategory
log category: MuonErrorMatrixAdjuster
void multiply(reco::TrackBase::CovarianceMatrix &revised_matrix, const reco::TrackBase::CovarianceMatrix &scale_matrix)
mutliply revised_matrix (first argument) by second matrix TERM by TERM
bool divide(reco::TrackBase::CovarianceMatrix &num_matrix, const reco::TrackBase::CovarianceMatrix &denom_matrix)
divide the num_matrix (first argument) by second matrix, TERM by TERM
CovarianceMatrix covariance() const
return track covariance matrix
Definition: TrackBase.h:776
edm::Ref< reco::TrackExtraCollection >::key_type theTEi
bool isNull() const
Checks for null.
Definition: Ref.h:248
void setExtra(const TrackExtraRef &ref)
set reference to "extra" object
Definition: Track.h:189
math::Error< dimension >::type CovarianceMatrix
5 parameter covariance matrix
Definition: TrackBase.h:77
void MuonErrorMatrixAdjuster::multiply ( reco::TrackBase::CovarianceMatrix revised_matrix,
const reco::TrackBase::CovarianceMatrix scale_matrix 
)
private

mutliply revised_matrix (first argument) by second matrix TERM by TERM

Definition at line 61 of file MuonErrorMatrixAdjuster.cc.

References mps_fire::i.

Referenced by fix_cov_matrix(), and makeTrackExtra().

61  {
62  //scale term by term the matrix
63  // the true type of the matrix is such that [i][j] is the same memory object as [j][i]: looping i:0-5, j:0-5 double multiply the terms
64  // need to loop only on i:0-5, j:i-5
65  for(int i = 0;i!=5;i++){for(int j = i;j!=5;j++){
66  revised_matrix(i,j)*=scale_matrix(i,j);
67  }}
68 }
void MuonErrorMatrixAdjuster::produce ( edm::Event iEvent,
const edm::EventSetup iSetup 
)
overrideprivate

Definition at line 168 of file MuonErrorMatrixAdjuster.cc.

References attachRecHits(), edm::EventSetup::get(), edm::Event::getByLabel(), edm::Event::getRefBeforePut(), trajectoryStateTransform::initialFreeState(), LogDebug, PV3DBase< T, PVType, FrameType >::mag(), makeTrack(), makeTrackExtra(), eostools::move(), FreeTrajectoryState::position(), edm::ESHandle< T >::product(), edm::Event::put(), selectTrack(), theCategory, theField, theInstanceName, theRefprodRH, theRefprodTE, theRHi, theTEi, theTrackLabel, and l1t::tracks.

169 {
170  using namespace edm;
171 
172  //open a collection of track
174  iEvent.getByLabel( theTrackLabel,tracks);
175  LogDebug( theCategory)<<"considering: "<<tracks->size()<<" uncorrected reco::Track from the event.("<< theTrackLabel<<")";
176 
177  //get the mag field
178  iSetup.get<IdealMagneticFieldRecord>().get( theField);
179 
181  iSetup.get<TrackerTopologyRcd>().get(httopo);
182  const TrackerTopology& ttopo = *httopo;
183 
184  //prepare the output collection
185  auto Toutput = std::make_unique<reco::TrackCollection>();
186  auto TRHoutput = std::make_unique<TrackingRecHitCollection>();
187  auto TEoutput = std::make_unique<reco::TrackExtraCollection>();
189  theTEi=0;
191  theRHi=0;
192 
193 
194 
195  for(unsigned int it=0;it!=tracks->size();it++)
196  {
197  const reco::Track & recotrack_orig = (*tracks)[it];
199  if (PCAstate.position().mag()==0)
200  {edm::LogError( theCategory)<<"invalid state from track initial state in "<< theTrackLabel <<". skipping.";continue;}
201 
202  //create a reco::Track
203  reco::Track recotrack = makeTrack(recotrack_orig,PCAstate);
204 
205  //make a selection on the create reco::Track
206  if (!selectTrack(recotrack)) continue;
207 
208  Toutput->push_back(recotrack);
209  reco::Track & recotrackref = Toutput->back();
210 
211  //build the track extra
212  reco::TrackExtra * extra = makeTrackExtra(recotrack_orig,recotrackref,*TEoutput);
213  if (!extra){
214  edm::LogError( theCategory)<<"cannot create the track extra for this track.";
215  //pop the inserted track
216  Toutput->pop_back();
217  continue;}
218 
219  //attach the collection of rechits
220  if (!attachRecHits(recotrack_orig,recotrackref,*extra,*TRHoutput, ttopo)){
221  edm::LogError( theCategory)<<"cannot attach any rechits on this track";
222  //pop the inserted track
223  Toutput->pop_back();
224  //pop the track extra
225  TEoutput->pop_back();
226  theTEi--;
227  continue;}
228 
229  }//loop over the original reco tracks
230 
231  LogDebug( theCategory)<<"writing: "<<Toutput->size()<<" corrected reco::Track to the event.";
232 
233  iEvent.put(std::move(Toutput), theInstanceName);
234  iEvent.put(std::move(TEoutput));
235  iEvent.put(std::move(TRHoutput));
236 
237 }
#define LogDebug(id)
edm::RefProd< reco::TrackExtraCollection > theRefprodTE
get reference before put track extra to the event, in order to create edm::Ref
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
Definition: Event.h:125
std::string theInstanceName
instrance name of the created track collecion. rechit and trackextra have no instance name ...
edm::InputTag theTrackLabel
input tag of the reco::Track collection to be corrected
bool attachRecHits(const reco::Track &recotrack_orig, reco::Track &recotrack, reco::TrackExtra &trackextra, TrackingRecHitCollection &RHcol, const TrackerTopology &ttopo)
attached rechits to the newly created reco::Track and reco::TrackExtra
std::string theCategory
log category: MuonErrorMatrixAdjuster
edm::ESHandle< MagneticField > theField
hold on to the magnetic field
T mag() const
Definition: PV3DBase.h:67
edm::Ref< reco::TrackExtraCollection >::key_type theTEi
edm::RefProd< TrackingRecHitCollection > theRefprodRH
get reference before put rechit to the event, in order to create edm::Ref
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
Definition: Event.h:480
RefProd< PROD > getRefBeforePut()
Definition: Event.h:150
GlobalPoint position() const
std::vector< TrackExtra > TrackExtraCollection
collection of TrackExtra objects
Definition: TrackExtraFwd.h:11
reco::TrackExtra * makeTrackExtra(const reco::Track &recotrack_orig, reco::Track &recotrack, reco::TrackExtraCollection &TEcol)
create a track extra for the newly created recotrack, scaling the outer/inner measurment error matrix...
bool selectTrack(const reco::Track &recotrack_orig)
make a selection on the reco:Track. (dummy for the moment)
reco::Track makeTrack(const reco::Track &recotrack_orig, const FreeTrajectoryState &PCAstate)
create a corrected reco::Track from itself and trajectory state (redundant information) ...
HLT enums.
T get() const
Definition: EventSetup.h:71
FreeTrajectoryState initialFreeState(const reco::Track &tk, const MagneticField *field, bool withErr=true)
T const * product() const
Definition: ESHandle.h:86
def move(src, dest)
Definition: eostools.py:511
edm::Ref< TrackingRecHitCollection >::key_type theRHi
bool MuonErrorMatrixAdjuster::selectTrack ( const reco::Track recotrack_orig)
private

make a selection on the reco:Track. (dummy for the moment)

Definition at line 164 of file MuonErrorMatrixAdjuster.cc.

Referenced by produce().

164 {return true;}

Member Data Documentation

std::string MuonErrorMatrixAdjuster::theCategory
private
edm::ESHandle<MagneticField> MuonErrorMatrixAdjuster::theField
private

hold on to the magnetic field

Definition at line 103 of file MuonErrorMatrixAdjuster.h.

Referenced by produce().

std::string MuonErrorMatrixAdjuster::theInstanceName
private

instrance name of the created track collecion. rechit and trackextra have no instance name

Definition at line 92 of file MuonErrorMatrixAdjuster.h.

Referenced by MuonErrorMatrixAdjuster(), and produce().

MuonErrorMatrix* MuonErrorMatrixAdjuster::theMatrixProvider
private

Definition at line 99 of file MuonErrorMatrixAdjuster.h.

Referenced by beginJob(), endJob(), and fix_cov_matrix().

edm::ParameterSet MuonErrorMatrixAdjuster::theMatrixProvider_pset
private

holds the error matrix parametrization

Definition at line 98 of file MuonErrorMatrixAdjuster.h.

Referenced by beginJob(), and MuonErrorMatrixAdjuster().

edm::RefProd<TrackingRecHitCollection> MuonErrorMatrixAdjuster::theRefprodRH
private

get reference before put rechit to the event, in order to create edm::Ref

Definition at line 110 of file MuonErrorMatrixAdjuster.h.

Referenced by attachRecHits(), and produce().

edm::RefProd<reco::TrackExtraCollection> MuonErrorMatrixAdjuster::theRefprodTE
private

get reference before put track extra to the event, in order to create edm::Ref

Definition at line 106 of file MuonErrorMatrixAdjuster.h.

Referenced by makeTrackExtra(), and produce().

bool MuonErrorMatrixAdjuster::theRescale
private

select the rescaling or replacing method to correct the error matrix

Definition at line 95 of file MuonErrorMatrixAdjuster.h.

Referenced by fix_cov_matrix(), and MuonErrorMatrixAdjuster().

edm::Ref<TrackingRecHitCollection>::key_type MuonErrorMatrixAdjuster::theRHi
private

Definition at line 111 of file MuonErrorMatrixAdjuster.h.

Referenced by attachRecHits(), and produce().

edm::Ref<reco::TrackExtraCollection>::key_type MuonErrorMatrixAdjuster::theTEi
private

Definition at line 107 of file MuonErrorMatrixAdjuster.h.

Referenced by makeTrackExtra(), and produce().

edm::InputTag MuonErrorMatrixAdjuster::theTrackLabel
private

input tag of the reco::Track collection to be corrected

Definition at line 89 of file MuonErrorMatrixAdjuster.h.

Referenced by MuonErrorMatrixAdjuster(), and produce().