CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
MuonSelector.h
Go to the documentation of this file.
1 #ifndef RecoAlgos_MuonSelector_h
2 #define RecoAlgos_MuonSelector_h
3 
26 
27 namespace helper {
29  public:
31 
33 
34  //------------------------------------------------------------------
39  //------------------------------------------------------------------
40  inline bool cloneClusters() {return cloneClusters_ ; }
41  inline void setCloneClusters(bool w) { cloneClusters_ = w; }
42 
43  //------------------------------------------------------------------
45  //------------------------------------------------------------------
47 
48  //------------------------------------------------------------------
50  //------------------------------------------------------------------
51  inline size_t size() const { return selMuons_->size(); }
52 
53 
54  //------------------------------------------------------------------
58  //------------------------------------------------------------------
59  template<typename I>
60  void cloneAndStore( const I & begin, const I & end, edm::Event & evt ) ;
61 
62  private:
63  //--- Collections to store:
64  std::auto_ptr<reco::MuonCollection> selMuons_;
65  std::auto_ptr<reco::TrackCollection> selTracks_;
66  std::auto_ptr<reco::TrackExtraCollection> selTracksExtras_;
67  std::auto_ptr<TrackingRecHitCollection> selTracksHits_;
68  std::auto_ptr<reco::TrackCollection> selGlobalMuonTracks_;
69  std::auto_ptr<reco::TrackExtraCollection> selGlobalMuonTracksExtras_;
70  std::auto_ptr<TrackingRecHitCollection> selGlobalMuonTracksHits_;
71  std::auto_ptr<reco::TrackCollection> selStandAloneTracks_;
72  std::auto_ptr<reco::TrackExtraCollection> selStandAloneTracksExtras_;
73  std::auto_ptr<TrackingRecHitCollection> selStandAloneTracksHits_;
74  std::auto_ptr< edmNew::DetSetVector<SiStripCluster> > selStripClusters_;
75  std::auto_ptr< edmNew::DetSetVector<SiPixelCluster> > selPixelClusters_;
76 
81 
85 
89 
93 
94  //--- Indices into collections handled with RefProd
96 
97  //--- Switches
99 
100  //--- Methods
101  //------------------------------------------------------------------
103  //------------------------------------------------------------------
104  void processMuon( const reco::Muon & mu );
105 
106  bool clusterRefsOK(const reco::Track &track) const;
107  };
108  // (end of struct MuonCollectionStoreManager)
109 
110  template<typename I>
111  void
113  {
114  using namespace reco;
115  rHits_ = evt.template getRefBeforePut<TrackingRecHitCollection>("TrackerOnly");
116  rGBHits_ = evt.template getRefBeforePut<TrackingRecHitCollection>("GlobalMuon");
117  rSAHits_ = evt.template getRefBeforePut<TrackingRecHitCollection>("StandAlone");
118  rTrackExtras_ = evt.template getRefBeforePut<TrackExtraCollection>("TrackerOnly");
119  rGBTrackExtras_ = evt.template getRefBeforePut<TrackExtraCollection>("GlobalMuon");
120  rSATrackExtras_ = evt.template getRefBeforePut<TrackExtraCollection>("StandAlone");
121  rTracks_ = evt.template getRefBeforePut<TrackCollection>("TrackerOnly");
122  rGBTracks_ = evt.template getRefBeforePut<TrackCollection>("GlobalMuon");
123  rSATracks_ = evt.template getRefBeforePut<TrackCollection>("StandAlone");
124  rMuons_ = evt.template getRefBeforePut<MuonCollection>("SelectedMuons");
125  //--- New: save clusters too
127  = evt.template getRefBeforePut<edmNew::DetSetVector<SiStripCluster> >();
128 
130  = evt.template getRefBeforePut<edmNew::DetSetVector<SiPixelCluster> >();
131 
132  id_=0; igbd_=0; isad_=0;
133  idx_ = 0; igbdx_=0; isadx_=0;
134  hidx_=0; higbdx_=0; hisadx_=0;
136 
137  for( I i = begin; i != end; ++ i ) {
138  const Muon & mu = * * i;
139  //--- Clone this track, and store references aside
140  processMuon( mu );
141  }
142  //--- Clone the clusters and fixup refs
144  *selStripClusters_, rStripClusters);
145  }
146 
147  //----------------------------------------------------------------------
149  public:
151  std::string alias( cfg.getParameter<std::string>( "@module_label" ) );
152 
153 
154  produces<reco::MuonCollection>("SelectedMuons").setBranchAlias( alias + "SelectedMuons" );
155  produces<reco::TrackCollection>("TrackerOnly").setBranchAlias( alias + "TrackerOnlyTracks" );
156  produces<reco::TrackExtraCollection>("TrackerOnly").setBranchAlias( alias + "TrackerOnlyExtras" );
157  produces<TrackingRecHitCollection>("TrackerOnly").setBranchAlias( alias + "TrackerOnlyHits" );
158  //--- New: save clusters too
159  produces< edmNew::DetSetVector<SiPixelCluster> >().setBranchAlias( alias + "PixelClusters" );
160  produces< edmNew::DetSetVector<SiStripCluster> >().setBranchAlias( alias + "StripClusters" );
161  produces<reco::TrackCollection>("GlobalMuon").setBranchAlias( alias + "GlobalMuonTracks" );
162  produces<reco::TrackExtraCollection>("GlobalMuon").setBranchAlias( alias + "GlobalMuonExtras" );
163  produces<TrackingRecHitCollection>("GlobalMuon").setBranchAlias( alias + "GlobalMuonHits" );
164  produces<reco::TrackCollection>("StandAlone").setBranchAlias( alias + "StandAloneTracks" );
165  produces<reco::TrackExtraCollection>("StandAlone").setBranchAlias( alias + "StandAloneExtras" );
166  produces<TrackingRecHitCollection>("StandAlone").setBranchAlias( alias + "StandAloneHits" );
167 
168  }
169  }; // (end of class MuonSelectorBase)
170 
171 
172  template<>
176  };
177 
178 }
179 
180 #endif
T getParameter(std::string const &) const
reco::TrackExtraRefProd rSATrackExtras_
Definition: MuonSelector.h:87
int i
Definition: DBlmapReader.cc:9
std::auto_ptr< edmNew::DetSetVector< SiPixelCluster > > selPixelClusters_
Definition: MuonSelector.h:75
std::auto_ptr< reco::TrackCollection > selTracks_
Definition: MuonSelector.h:65
MuonSelectorBase(const edm::ParameterSet &cfg)
Definition: MuonSelector.h:150
std::auto_ptr< reco::TrackCollection > selStandAloneTracks_
Definition: MuonSelector.h:71
MuonCollectionStoreManager(const edm::Handle< reco::MuonCollection > &)
Definition: MuonSelector.cc:18
std::vector< Muon > MuonCollection
collection of Muon objects
Definition: MuonFwd.h:9
bool cloneClusters_
Clone clusters, or not? Default: true.
Definition: MuonSelector.h:98
reco::TrackExtraRefProd rTrackExtras_
Definition: MuonSelector.h:79
edm::OrphanHandle< reco::MuonCollection > put(edm::Event &evt)
Put tracks, track extras and hits+clusters into the event.
std::auto_ptr< TrackingRecHitCollection > selGlobalMuonTracksHits_
Definition: MuonSelector.h:70
TrackingRecHitRefProd rSAHits_
Definition: MuonSelector.h:88
std::auto_ptr< reco::TrackExtraCollection > selStandAloneTracksExtras_
Definition: MuonSelector.h:72
void processMuon(const reco::Muon &mu)
Process a single muon.
Definition: MuonSelector.cc:49
const std::complex< double > I
Definition: I.h:8
std::auto_ptr< reco::TrackExtraCollection > selGlobalMuonTracksExtras_
Definition: MuonSelector.h:69
std::auto_ptr< edmNew::DetSetVector< SiStripCluster > > selStripClusters_
Definition: MuonSelector.h:74
TrackingRecHitRefProd rHits_
Definition: MuonSelector.h:80
const int mu
Definition: Constants.h:23
#define end
Definition: vmac.h:38
void cloneAndStore(const I &begin, const I &end, edm::Event &evt)
Method to clone tracks, track extras and their hits and clusters. typename I = this is an interator o...
Definition: MuonSelector.h:112
TrackingRecHitRefProd rGBHits_
Definition: MuonSelector.h:84
reco::TrackExtraRefProd rGBTrackExtras_
Definition: MuonSelector.h:83
size_t size() const
Get the size.
Definition: MuonSelector.h:51
std::auto_ptr< TrackingRecHitCollection > selTracksHits_
Definition: MuonSelector.h:67
void clear()
clear records
#define begin
Definition: vmac.h:31
reco::MuonCollection collection
Definition: MuonSelector.h:30
std::auto_ptr< reco::MuonCollection > selMuons_
Definition: MuonSelector.h:64
void processAllClusters(edmNew::DetSetVector< SiPixelCluster > &pixelDsvToFill, edm::RefProd< edmNew::DetSetVector< SiPixelCluster > > refPixelClusters, edmNew::DetSetVector< SiStripCluster > &stripDsvToFill, edm::RefProd< edmNew::DetSetVector< SiStripCluster > > refStripClusters)
std::auto_ptr< reco::TrackExtraCollection > selTracksExtras_
Definition: MuonSelector.h:66
std::auto_ptr< reco::TrackCollection > selGlobalMuonTracks_
Definition: MuonSelector.h:68
bool clusterRefsOK(const reco::Track &track) const
Check if all references to silicon strip/pixel clusters are available.
std::auto_ptr< TrackingRecHitCollection > selStandAloneTracksHits_
Definition: MuonSelector.h:73
T w() const