ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitProd/TreeFiller/src/FillerMCVertexes.cc
Revision: 1.2
Committed: Thu Mar 18 20:21:00 2010 UTC (15 years, 1 month ago) by bendavid
Content type: text/plain
Branch: MAIN
CVS Tags: Mit_032, Mit_031, Mit_025c_branch2, Mit_025c_branch1, Mit_030, Mit_029c, Mit_029b, Mit_030_pre1, Mit_029a, Mit_029, Mit_029_pre1, Mit_028a, Mit_025c_branch0, Mit_028, Mit_027a, Mit_027, Mit_026, Mit_025e, Mit_025d, Mit_025c, Mit_025b, Mit_025a, Mit_025, Mit_025pre2, Mit_024b, Mit_025pre1, Mit_024a, Mit_024, Mit_023, Mit_022a, Mit_022, Mit_020d, TMit_020d, Mit_020c, Mit_021, Mit_021pre2, Mit_021pre1, Mit_020b, Mit_020a, Mit_020, Mit_020pre1, Mit_018, Mit_017, Mit_017pre3, Mit_017pre2, Mit_017pre1, Mit_016, Mit_015b, Mit_015a, Mit_015, Mit_014e, Mit_014d, Mit_014c, Mit_014b, Mit_014a, Mit_014, Mit_014pre3, Mit_014pre2, Mit_014pre1, Mit_013d, Mit_013c, Mit_013b, Mit_013a, Mit_013, HEAD
Branch point for: Mit_025c_branch
Changes since 1.1: +2 -2 lines
Error occurred while calculating annotation data.
Log Message:
Fix beginrun,beginjob mess

File Contents

# Content
1 // $Id: FillerMCVertexes.cc,v 1.1 2009/09/25 08:42:42 loizides Exp $
2
3 #include "MitProd/TreeFiller/interface/FillerMCVertexes.h"
4 #include "MitAna/DataTree/interface/Names.h"
5 #include "MitAna/DataTree/interface/VertexCol.h"
6 #include "MitProd/ObjectService/interface/ObjectService.h"
7
8 using namespace std;
9 using namespace edm;
10 using namespace mithep;
11
12 //--------------------------------------------------------------------------------------------------
13 FillerMCVertexes::FillerMCVertexes(const ParameterSet &cfg, const char *name, bool active) :
14 BaseFiller(cfg, name, active),
15 useAodGen_(Conf().getUntrackedParameter<bool>("useAodGen",true)),
16 edmName_(Conf().getUntrackedParameter<string>("edmName","genParticles")),
17 mitName_(Conf().getUntrackedParameter<string>("mitName","MCVertexes")),
18 vertexes_(new mithep::VertexArr(1))
19 {
20 // Constructor.
21 }
22
23 //--------------------------------------------------------------------------------------------------
24 FillerMCVertexes::~FillerMCVertexes()
25 {
26 // Destructor.
27
28 delete vertexes_;
29 }
30
31 //--------------------------------------------------------------------------------------------------
32 void FillerMCVertexes::BookDataBlock(TreeWriter &tws)
33 {
34 // Add branch to tree.
35
36 tws.AddBranch(mitName_,&vertexes_);
37 OS()->add<VertexArr>(vertexes_,mitName_);
38 }
39
40 //--------------------------------------------------------------------------------------------------
41 void FillerMCVertexes::FillDataBlock(const edm::Event &event,
42 const edm::EventSetup &setup)
43 {
44 // Loop over generated or simulated particles and fill their information.
45
46 vertexes_->Delete();
47
48 Double_t vtx=0, vty=0, vtz=0;
49
50 if (!useAodGen_) {
51 Handle<edm::HepMCProduct> hHepMCProduct;
52 GetProduct(edmName_, hHepMCProduct, event);
53 const HepMC::GenEvent &GenEvent = hHepMCProduct->getHepMCData();
54
55 for (HepMC::GenEvent::particle_const_iterator pgen = GenEvent.particles_begin();
56 pgen != GenEvent.particles_end(); ++pgen) {
57 HepMC::GenParticle *mcPart = (*pgen);
58 if(!mcPart)
59 continue;
60 HepMC::GenVertex *dvtx = mcPart->end_vertex();
61 if (dvtx) {
62 vtx = dvtx->point3d().x()/10.0;
63 vty = dvtx->point3d().y()/10.0;
64 vtz = dvtx->point3d().z()/10.0;
65 break;
66 }
67 }
68 } else { /*useAodGen_*/
69 Handle<reco::GenParticleCollection> hGenPProduct;
70 GetProduct(edmName_, hGenPProduct, event);
71 const reco::GenParticleCollection genParticles = *(hGenPProduct.product());
72 for (reco::GenParticleCollection::const_iterator pgen = genParticles.begin();
73 pgen != genParticles.end(); ++pgen) {
74
75 int found = 0;
76 for (unsigned int i=0; i<pgen->numberOfDaughters(); ++i) {
77 const reco::Candidate *dau = pgen->daughter(i);
78 if (dau) {
79 vtx = dau->vx();
80 vty = dau->vy();
81 vtz = dau->vz();
82 found = 1;
83 break;
84 }
85 }
86 if (found)
87 break;
88 }
89 }
90
91 mithep::Vertex *newvtx = vertexes_->Allocate();
92 new (newvtx) mithep::Vertex(vtx, vty, vtz);
93 vertexes_->Trim();
94 }