ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitProd/TreeFiller/src/FillerMuons.cc
Revision: 1.3
Committed: Wed Jul 2 13:30:09 2008 UTC (16 years, 10 months ago) by bendavid
Content type: text/plain
Branch: MAIN
Changes since 1.2: +2 -2 lines
Log Message:
cleaned up scheme for specifying edm names

File Contents

# User Rev Content
1 bendavid 1.3 // $Id: FillerMuons.cc,v 1.2 2008/07/01 21:11:47 loizides Exp $
2 loizides 1.1
3     #include "MitProd/TreeFiller/interface/FillerMuons.h"
4     #include "FWCore/MessageLogger/interface/MessageLogger.h"
5     #include "DataFormats/Common/interface/Handle.h"
6     #include "DataFormats/MuonReco/interface/Muon.h"
7     #include "DataFormats/MuonReco/interface/MuonFwd.h"
8     #include "MitAna/DataTree/interface/Muon.h"
9     #include "MitAna/DataTree/interface/Track.h"
10     #include "MitAna/DataTree/interface/Names.h"
11    
12     using namespace std;
13     using namespace edm;
14     using namespace mithep;
15    
16     //-------------------------------------------------------------------------------------------------
17 loizides 1.2 FillerMuons::FillerMuons(const edm::ParameterSet &cfg, bool active,
18     const TrackMap *globalMap, const TrackMap *stdMap,
19     const TrackMap *stdVtxMap, const TrackMap* trackerMap) :
20     BaseFiller(cfg, "Muons", active),
21 loizides 1.1 edmName_(Conf().getUntrackedParameter<string>("edmName","muons")),
22     mitName_(Conf().getUntrackedParameter<string>("mitName",Names::gkMuonBrn)),
23     muons_(new mithep::MuonArr),
24     globalTrackMap_(globalMap),
25     standaloneTrackMap_(stdMap),
26     standaloneVtxTrackMap_(stdVtxMap),
27     trackerTrackMap_(trackerMap)
28     {
29     // Constructor.
30     }
31    
32     //-------------------------------------------------------------------------------------------------
33     FillerMuons::~FillerMuons()
34     {
35     // Destructor.
36     }
37    
38     //-------------------------------------------------------------------------------------------------
39     void FillerMuons::BookDataBlock(TreeWriter &tws)
40     {
41     // Add muons branch to tree.
42    
43     tws.AddBranch(mitName_.c_str(),&muons_);
44     }
45    
46     //-------------------------------------------------------------------------------------------------
47     void FillerMuons::FillDataBlock(const edm::Event &event,
48     const edm::EventSetup &setup)
49     {
50     // Fill muon information.
51    
52     muons_->Reset();
53    
54     // get the muons collection
55     try {
56 bendavid 1.3 event.getByLabel(edm::InputTag(edmName_),muonProduct_);
57 loizides 1.1 } catch (cms::Exception& ex) {
58     edm::LogError("FillerMuons") << "Error! Cannot get collection with label "
59     << edmName_ << endl;
60     throw edm::Exception(edm::errors::Configuration, "FillerMuons:FillDataBlock()\n")
61     << "Error! Cannot get collection with label " << edmName_ << endl;
62     }
63    
64     const reco::MuonCollection inMuons = *(muonProduct_.product());
65    
66     for (reco::MuonCollection::const_iterator iM = inMuons.begin(); iM != inMuons.end(); ++iM) {
67    
68     mithep::Muon* outMuon = muons_->AddNew();
69    
70     if (globalTrackMap_ && iM->combinedMuon().isNonnull())
71     outMuon->SetGlobalTrack(globalTrackMap_->GetMit(iM->combinedMuon()));
72    
73     if (standaloneTrackMap_ && standaloneVtxTrackMap_ && iM->standAloneMuon().isNonnull()) {
74     Int_t refProductId = iM->standAloneMuon().id().id();
75     if ( refProductId == standaloneVtxTrackMap_->GetEdmProductId())
76     outMuon->SetStandaloneTrack(standaloneVtxTrackMap_->GetMit(iM->standAloneMuon()));
77     else if ( refProductId == standaloneTrackMap_->GetEdmProductId())
78     outMuon->SetStandaloneTrack(standaloneTrackMap_->GetMit(iM->standAloneMuon()));
79     else throw edm::Exception(edm::errors::Configuration, "FillerMuons:FillDataBlock()\n")
80     << "Error! Track reference in unmapped collection " << edmName_ << endl;
81     }
82     if (trackerTrackMap_ && iM->track().isNonnull())
83     outMuon->SetTrackerTrack(trackerTrackMap_->GetMit(iM->track()));
84     }
85    
86     muons_->Trim();
87     }