CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Private Member Functions | Private Attributes
TrackerTreeGenerator Class Reference

#include <Alignment/TrackerAlignment/plugins/TrackerTreeGenerator.cc>

Inheritance diagram for TrackerTreeGenerator:
edm::EDAnalyzer edm::EDConsumerBase

Public Member Functions

 TrackerTreeGenerator (const edm::ParameterSet &)
 
 ~TrackerTreeGenerator ()
 
- Public Member Functions inherited from edm::EDAnalyzer
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
 EDAnalyzer ()
 
ModuleDescription const & moduleDescription () const
 
std::string workerType () const
 
virtual ~EDAnalyzer ()
 
- Public Member Functions inherited from edm::EDConsumerBase
std::vector< ConsumesInfoconsumesInfo () const
 
 EDConsumerBase ()
 
ProductHolderIndexAndSkipBit indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductHolderIndexAndSkipBit > &) const
 
void itemsToGet (BranchType, std::vector< ProductHolderIndexAndSkipBit > &) const
 
std::vector
< ProductHolderIndexAndSkipBit >
const & 
itemsToGetFromEvent () const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void modulesDependentUpon (const std::string &iProcessName, std::vector< const char * > &oModuleLabels) const
 
void modulesWhoseProductsAreConsumed (std::vector< ModuleDescription const * > &modules, ProductRegistry const &preg, std::map< std::string, ModuleDescription const * > const &labelsToDesc, std::string const &processName) const
 
bool registeredToConsume (ProductHolderIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
void updateLookup (BranchType iBranchType, ProductHolderIndexHelper const &)
 
virtual ~EDConsumerBase ()
 

Private Member Functions

virtual void analyze (const edm::Event &, const edm::EventSetup &)
 
virtual void beginJob ()
 
virtual void endJob ()
 

Private Attributes

const bool createEntryForDoubleSidedModule_
 
edm::ParameterSet theParameterSet
 
std::vector< TrackerTreeVariablesvTkTreeVar_
 

Additional Inherited Members

- Public Types inherited from edm::EDAnalyzer
typedef EDAnalyzer ModuleType
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 
- Static Public Member Functions inherited from edm::EDAnalyzer
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &)
 
- 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 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

Description: <one line="" class="" summary>="">

Implementation: <Notes on="" implementation>="">

Definition at line 73 of file TrackerTreeGenerator.cc.

Constructor & Destructor Documentation

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

Definition at line 102 of file TrackerTreeGenerator.cc.

102  :
103 createEntryForDoubleSidedModule_(iConfig.getParameter<bool>("createEntryForDoubleSidedModule")),
104 theParameterSet( iConfig )
105 {
106 }
T getParameter(std::string const &) const
edm::ParameterSet theParameterSet
const bool createEntryForDoubleSidedModule_
TrackerTreeGenerator::~TrackerTreeGenerator ( )

Definition at line 109 of file TrackerTreeGenerator.cc.

110 {
111 }

Member Function Documentation

void TrackerTreeGenerator::analyze ( const edm::Event iEvent,
const edm::EventSetup iSetup 
)
privatevirtual

Implements edm::EDAnalyzer.

Definition at line 120 of file TrackerTreeGenerator.cc.

References TrackerTreeVariables::blade, PXFDetId::blade(), TrackerTreeVariables::bladeAl, TrackerGeomBuilderFromGeometricDet::build(), createEntryForDoubleSidedModule_, SiPixelRawToDigiRegional_cfi::deltaPhi, TrackerGeometry::detIds(), TrackerGeometry::detUnitIds(), PXFDetId::disk(), dPhi(), PFRecoTauDiscriminationAgainstElectronDeadECAL_cfi::dR, PV3DBase< T, PVType, FrameType >::eta(), edm::EventSetup::get(), TrackerTreeVariables::half, TrackerGeometry::idToDet(), TrackerTreeVariables::isDoubleSide, TOBDetId::isDoubleSide(), TIBDetId::isDoubleSide(), TIDDetId::isDoubleSide(), TECDetId::isDoubleSide(), TrackerTreeVariables::isRPhi, TOBDetId::isRPhi(), TIBDetId::isRPhi(), TIDDetId::isRPhi(), TECDetId::isRPhi(), PXBDetId::ladder(), TrackerTreeVariables::layer, PXBDetId::layer(), TOBDetId::layer(), TIBDetId::layer(), TrackerTreeVariables::module, PXBDetId::module(), PXFDetId::module(), TOBDetId::module(), TIBDetId::module(), TIDDetId::module(), TECDetId::module(), TrackerTreeVariables::nStrips, StripTopology::nstrips(), TrackerTreeVariables::outerInner, TrackerTreeVariables::panel, PXFDetId::panel(), PV3DBase< T, PVType, FrameType >::perp(), TrackerTreeVariables::petal, TECDetId::petal(), PV3DBase< T, PVType, FrameType >::phi(), PixelSubdetector::PixelBarrel, PixelSubdetector::PixelEndcap, TrackerTreeVariables::posEta, TrackerTreeVariables::posPhi, TrackerTreeVariables::posR, TrackerTreeVariables::posX, TrackerTreeVariables::posY, TrackerTreeVariables::posZ, TrackerTreeVariables::rawId, DetId::rawId(), TrackerTreeVariables::ring, TIDDetId::ring(), TECDetId::ring(), TrackerTreeVariables::rod, TOBDetId::rod(), TrackerTreeVariables::rodAl, TrackerTreeVariables::side, PXFDetId::side(), TIDDetId::side(), TECDetId::side(), StripGeomDetUnit::specificTopology(), TIBDetId::string(), TrackerTreeVariables::subdetId, DetId::subdetId(), StripSubdetector::TEC, StripSubdetector::TIB, StripSubdetector::TID, StripSubdetector::TOB, Surface::toGlobal(), TrackerTreeVariables::uDirection, TrackerTreeVariables::vDirection, vTkTreeVar_, TrackerTreeVariables::wDirection, TIDDetId::wheel(), TECDetId::wheel(), PV3DBase< T, PVType, FrameType >::x(), PV3DBase< T, PVType, FrameType >::y(), and PV3DBase< T, PVType, FrameType >::z().

121 {
122  //iSetup.get<TrackerDigiGeometryRecord>().get(tkGeom);
123  // now try to take directly the ideal geometry independent of used geometry in Global Tag
124  edm::ESHandle<GeometricDet> geometricDet;
125  iSetup.get<IdealGeometryRecord>().get(geometricDet);
126 
128  iSetup.get<PTrackerParametersRcd>().get(ptp);
129  TrackerGeomBuilderFromGeometricDet trackerBuilder;
130  TrackerGeometry* tkGeom = trackerBuilder.build(&(*geometricDet), *ptp);
131 
132  const TrackerGeometry *bareTkGeomPtr = &(*tkGeom);
133 
134  edm::LogInfo("TrackerTreeGenerator") //<< "@SUB=analyze"
135  << "There are " << bareTkGeomPtr->detIds().size()
136  << " dets and "<<bareTkGeomPtr->detUnitIds().size()
137  <<" detUnits in the Geometry Record";
138 
139  if(createEntryForDoubleSidedModule_)edm::LogInfo("TrackerTreeGenerator") << "Create entry for each module AND one entry for virtual "
140  << "double-sided module in addition";
141  else edm::LogInfo("TrackerTreeGenerator") << "Create one entry for each physical module, do NOT create additional entry for virtual "
142  << "double-sided module";
143 
144  const TrackingGeometry::DetIdContainer& detIdContainer = bareTkGeomPtr->detIds();
145 
146  std::vector<DetId>::const_iterator iDet;
147  for(iDet = detIdContainer.begin(); iDet != detIdContainer.end(); ++iDet){
148 
149  const DetId& detId = *iDet;
150  const GeomDet& geomDet = *tkGeom->idToDet(*(&detId));
151  const Surface& surface = (&geomDet)->surface();
152 
153  TrackerTreeVariables tkTreeVar;
154  uint32_t rawId = detId.rawId();
155  tkTreeVar.rawId = rawId;
156  tkTreeVar.subdetId = detId.subdetId();
157 
158  if(tkTreeVar.subdetId == PixelSubdetector::PixelBarrel){
159  PXBDetId pxbId(rawId);
160  unsigned int whichHalfBarrel(1), ladderAl(0); //DetId does not know about halfBarrels is PXB ...
161  if( (rawId>=302056964 && rawId<302059300) || (rawId>=302123268 && rawId<302127140) || (rawId>=302189572 && rawId<302194980) )whichHalfBarrel=2;
162  tkTreeVar.layer = pxbId.layer();
163  tkTreeVar.half = whichHalfBarrel;
164  tkTreeVar.rod = pxbId.ladder(); // ... so, ladder is not per halfBarrel-Layer, but per barrel-layer!
165  tkTreeVar.module = pxbId.module();
166  if(tkTreeVar.layer==1){
167  if(tkTreeVar.half==2)ladderAl = tkTreeVar.rod -5;
168  else if(tkTreeVar.rod>15)ladderAl = tkTreeVar.rod -10;
169  else ladderAl = tkTreeVar.rod;
170  }else if(tkTreeVar.layer==2){
171  if(tkTreeVar.half==2)ladderAl = tkTreeVar.rod -8;
172  else if(tkTreeVar.rod>24)ladderAl = tkTreeVar.rod -16;
173  else ladderAl = tkTreeVar.rod;
174  }else if(tkTreeVar.layer==3){
175  if(tkTreeVar.half==2)ladderAl = tkTreeVar.rod -11;
176  else if(tkTreeVar.rod>33)ladderAl = tkTreeVar.rod -22;
177  else ladderAl = tkTreeVar.rod;
178  }
179  tkTreeVar.rodAl = ladderAl;}
180  else if(tkTreeVar.subdetId == PixelSubdetector::PixelEndcap){
181  PXFDetId pxfId(rawId);
182  unsigned int whichHalfCylinder(1), bladeAl(0); //DetId does not kmow about halfCylinders in PXF
183  if( (rawId>=352394500 && rawId<352406032) || (rawId>=352460036 && rawId<352471568) || (rawId>=344005892 && rawId<344017424) || (rawId>=344071428 && rawId<344082960) )whichHalfCylinder=2;
184  tkTreeVar.layer = pxfId.disk();
185  tkTreeVar.side = pxfId.side();
186  tkTreeVar.half = whichHalfCylinder;
187  tkTreeVar.blade = pxfId.blade();
188  tkTreeVar.panel = pxfId.panel();
189  tkTreeVar.module = pxfId.module();
190  if(tkTreeVar.half==2)bladeAl = tkTreeVar.blade -6;
191  else if(tkTreeVar.blade>18)bladeAl = tkTreeVar.blade -12;
192  else bladeAl = tkTreeVar.blade;
193  tkTreeVar.bladeAl = bladeAl;}
194  else if(tkTreeVar.subdetId == StripSubdetector::TIB){
195  TIBDetId tibId(rawId);
196  unsigned int whichHalfShell(1), stringAl(0); //DetId does not kmow about halfShells in TIB
197  if( (rawId>=369120484 && rawId<369120688) || (rawId>=369121540 && rawId<369121776) || (rawId>=369136932 && rawId<369137200) || (rawId>=369137988 && rawId<369138288) ||
198  (rawId>=369153396 && rawId<369153744) || (rawId>=369154436 && rawId<369154800) || (rawId>=369169844 && rawId<369170256) || (rawId>=369170900 && rawId<369171344) ||
199  (rawId>=369124580 && rawId<369124784) || (rawId>=369125636 && rawId<369125872) || (rawId>=369141028 && rawId<369141296) || (rawId>=369142084 && rawId<369142384) ||
200  (rawId>=369157492 && rawId<369157840) || (rawId>=369158532 && rawId<369158896) || (rawId>=369173940 && rawId<369174352) || (rawId>=369174996 && rawId<369175440) ) whichHalfShell=2;
201  tkTreeVar.layer = tibId.layer();
202  tkTreeVar.side = tibId.string()[0];
203  tkTreeVar.half = whichHalfShell;
204  tkTreeVar.rod = tibId.string()[2];
205  tkTreeVar.outerInner = tibId.string()[1];
206  tkTreeVar.module = tibId.module();
207  tkTreeVar.isDoubleSide = tibId.isDoubleSide();
208  tkTreeVar.isRPhi = tibId.isRPhi();
209  if(tkTreeVar.half==2){
210  if(tkTreeVar.layer==1){
211  if(tkTreeVar.outerInner==1)stringAl = tkTreeVar.rod -13;
212  else if(tkTreeVar.outerInner==2)stringAl = tkTreeVar.rod -15;
213  }
214  if(tkTreeVar.layer==2){
215  if(tkTreeVar.outerInner==1)stringAl = tkTreeVar.rod -17;
216  else if(tkTreeVar.outerInner==2)stringAl = tkTreeVar.rod -19;
217  }
218  if(tkTreeVar.layer==3){
219  if(tkTreeVar.outerInner==1)stringAl = tkTreeVar.rod -22;
220  else if(tkTreeVar.outerInner==2)stringAl = tkTreeVar.rod -23;
221  }
222  if(tkTreeVar.layer==4){
223  if(tkTreeVar.outerInner==1)stringAl = tkTreeVar.rod -26;
224  else if(tkTreeVar.outerInner==2)stringAl = tkTreeVar.rod -28;
225  }
226  }
227  else stringAl = tkTreeVar.rod;
228  tkTreeVar.rodAl = stringAl;}
229  else if(tkTreeVar.subdetId == StripSubdetector::TID){
230  TIDDetId tidId(rawId);
231  tkTreeVar.layer = tidId.wheel();
232  tkTreeVar.side = tidId.side();
233  tkTreeVar.ring = tidId.ring();
234  tkTreeVar.outerInner = tidId.module()[0];
235  tkTreeVar.module = tidId.module()[1];
236  tkTreeVar.isDoubleSide = tidId.isDoubleSide();
237  tkTreeVar.isRPhi = tidId.isRPhi();}
238  else if(tkTreeVar.subdetId == StripSubdetector::TOB){
239  TOBDetId tobId(rawId);
240  tkTreeVar.layer = tobId.layer();
241  tkTreeVar.side = tobId.rod()[0];
242  tkTreeVar.rod = tobId.rod()[1];
243  tkTreeVar.module = tobId.module();
244  tkTreeVar.isDoubleSide = tobId.isDoubleSide();
245  tkTreeVar.isRPhi = tobId.isRPhi();}
246  else if(tkTreeVar.subdetId == StripSubdetector::TEC){
247  TECDetId tecId(rawId);
248  tkTreeVar.layer = tecId.wheel();
249  tkTreeVar.side = tecId.side();
250  tkTreeVar.ring = tecId.ring();
251  tkTreeVar.petal = tecId.petal()[1];
252  tkTreeVar.outerInner = tecId.petal()[0];
253  tkTreeVar.module = tecId.module();
254  tkTreeVar.isDoubleSide = tecId.isDoubleSide();
255  tkTreeVar.isRPhi = tecId.isRPhi();}
256 
257 
258  LocalPoint lPModule(0.,0.,0.), lUDirection(1.,0.,0.), lVDirection(0.,1.,0.), lWDirection(0.,0.,1.);
259  GlobalPoint gPModule = surface.toGlobal(lPModule),
260  gUDirection = surface.toGlobal(lUDirection),
261  gVDirection = surface.toGlobal(lVDirection),
262  gWDirection = surface.toGlobal(lWDirection);
263  double dR(999.), dPhi(999.), dZ(999.);
265  || tkTreeVar.subdetId==StripSubdetector::TOB){
266  dR = gWDirection.perp() - gPModule.perp();
267  dPhi = deltaPhi(gUDirection.phi(),gPModule.phi());
268  dZ = gVDirection.z() - gPModule.z();
269  tkTreeVar.uDirection = dPhi>0. ? 1 : -1;
270  tkTreeVar.vDirection = dZ>0. ? 1 : -1;
271  tkTreeVar.wDirection = dR>0. ? 1 : -1;
272  }else if(tkTreeVar.subdetId==PixelSubdetector::PixelEndcap){
273  dR = gUDirection.perp() - gPModule.perp();
274  dPhi = deltaPhi(gVDirection.phi(),gPModule.phi());
275  dZ = gWDirection.z() - gPModule.z();
276  tkTreeVar.uDirection = dR>0. ? 1 : -1;
277  tkTreeVar.vDirection = dPhi>0. ? 1 : -1;
278  tkTreeVar.wDirection = dZ>0. ? 1 : -1;
279  }else if(tkTreeVar.subdetId==StripSubdetector::TID || tkTreeVar.subdetId==StripSubdetector::TEC){
280  dR = gVDirection.perp() - gPModule.perp();
281  dPhi = deltaPhi(gUDirection.phi(),gPModule.phi());
282  dZ = gWDirection.z() - gPModule.z();
283  tkTreeVar.uDirection = dPhi>0. ? 1 : -1;
284  tkTreeVar.vDirection = dR>0. ? 1 : -1;
285  tkTreeVar.wDirection = dZ>0. ? 1 : -1;
286  }
287  tkTreeVar.posR = gPModule.perp();
288  tkTreeVar.posPhi = gPModule.phi(); // = gPModule.phi().degrees();
289  tkTreeVar.posEta = gPModule.eta();
290  tkTreeVar.posX = gPModule.x();
291  tkTreeVar.posY = gPModule.y();
292  tkTreeVar.posZ = gPModule.z();
293 
294 
295  if(dynamic_cast<const StripGeomDetUnit*>(&geomDet)){ //is it a single physical module?
296  const StripGeomDetUnit& StripgeomDetUnit = dynamic_cast<const StripGeomDetUnit&>(geomDet);
297  if(tkTreeVar.subdetId==StripSubdetector::TIB || tkTreeVar.subdetId==StripSubdetector::TOB ||
299  const StripTopology& topol = dynamic_cast<const StripTopology&>(StripgeomDetUnit.specificTopology());
300  tkTreeVar.nStrips = topol.nstrips();
301  }
302  }
303 
304 
305  if(!createEntryForDoubleSidedModule_){if(tkTreeVar.isDoubleSide==1)continue;} // do so only for individual modules and not also one entry for the combined doubleSided Module
306  vTkTreeVar_.push_back(tkTreeVar);
307  }
308 
309 }
GlobalPoint toGlobal(const Point2DBase< Scalar, LocalTag > lp) const
Definition: Surface.h:114
virtual int nstrips() const =0
T perp() const
Definition: PV3DBase.h:72
Geom::Phi< T > phi() const
Definition: PV3DBase.h:69
T y() const
Definition: PV3DBase.h:63
virtual const StripTopology & specificTopology() const
Returns a reference to the strip proxy topology.
uint32_t rawId() const
get the raw id
Definition: DetId.h:43
virtual const DetIdContainer & detIds() const
Returm a vector of all GeomDet DetIds (including those of GeomDetUnits)
double dPhi(double phi1, double phi2)
Definition: JetUtil.h:30
T z() const
Definition: PV3DBase.h:64
int subdetId() const
get the contents of the subdetector field (not cast into any detector&#39;s numbering enum) ...
Definition: DetId.h:37
Definition: DetId.h:18
const T & get() const
Definition: EventSetup.h:55
T eta() const
Definition: PV3DBase.h:76
TrackerGeometry * build(const GeometricDet *gd, const PTrackerParameters &ptp)
const bool createEntryForDoubleSidedModule_
virtual const DetIdContainer & detUnitIds() const
Returm a vector of all GeomDetUnit DetIds.
std::vector< TrackerTreeVariables > vTkTreeVar_
T x() const
Definition: PV3DBase.h:62
virtual const TrackerGeomDet * idToDet(DetId) const
std::vector< DetId > DetIdContainer
void TrackerTreeGenerator::beginJob ( void  )
privatevirtual

Reimplemented from edm::EDAnalyzer.

Definition at line 314 of file TrackerTreeGenerator.cc.

315 {
316 }
void TrackerTreeGenerator::endJob ( void  )
privatevirtual

Reimplemented from edm::EDAnalyzer.

Definition at line 321 of file TrackerTreeGenerator.cc.

References F(), fileService, TFileDirectory::make(), TFileService::mkdir(), python.rootplot.argparse::module, module::module(), relativeConstraints::ring, and vTkTreeVar_.

321  {
322  UInt_t rawId(999), subdetId(999), layer(999), side(999), half(999), rod(999), ring(999), petal(999),
323  blade(999), panel(999), outerInner(999), module(999), rodAl(999), bladeAl(999), nStrips(999);
324  Bool_t isDoubleSide(false), isRPhi(false);
325  Int_t uDirection(999), vDirection(999), wDirection(999);
326  Float_t posR(999.F), posPhi(999.F), posEta(999.F), posX(999.F), posY(999.F), posZ(999.F);
328  TFileDirectory treeDir = fileService->mkdir("TrackerTree");
329  TTree* trackerTree;
330  trackerTree = treeDir.make<TTree>("TrackerTree","IDs of all modules (ideal geometry)");
331  trackerTree->Branch("RawId", &rawId, "RawId/i");
332  trackerTree->Branch("SubdetId", &subdetId, "SubdetId/i");
333  trackerTree->Branch("Layer", &layer, "Layer/i"); // Barrel: Layer, Forward: Disk
334  trackerTree->Branch("Side", &side, "Side/i"); // Rod/Ring in +z or -z
335  trackerTree->Branch("Half", &half, "Half/i"); // PXB: HalfBarrel, PXF: HalfCylinder, TIB: HalfShell
336  trackerTree->Branch("Rod", &rod, "Rod/i"); // Barrel (Ladder or String or Rod)
337  trackerTree->Branch("Ring", &ring, "Ring/i"); // Forward
338  trackerTree->Branch("Petal", &petal, "Petal/i"); // TEC
339  trackerTree->Branch("Blade", &blade, "Blade/i"); // PXF
340  trackerTree->Branch("Panel", &panel, "Panel/i"); // PXF
341  trackerTree->Branch("OuterInner", &outerInner, "OuterInner/i"); // front/back String,Ring,Petal
342  trackerTree->Branch("Module", &module, "Module/i"); // Module ID
343  trackerTree->Branch("RodAl", &rodAl, "RodAl/i"); // Different for AlignmentHierarchy from TrackerHierarchy (TPB, TIB)
344  trackerTree->Branch("BladeAl", &bladeAl, "BladeAl/i"); // Different for AlignmentHierarchy from TrackerHierarchy (TPF)
345  trackerTree->Branch("NStrips", &nStrips, "NStrips/i");
346  trackerTree->Branch("IsDoubleSide", &isDoubleSide, "IsDoubleSide/O");
347  trackerTree->Branch("IsRPhi", &isRPhi, "IsRPhi/O");
348  trackerTree->Branch("UDirection", &uDirection, "UDirection/I");
349  trackerTree->Branch("VDirection", &vDirection, "VDirection/I");
350  trackerTree->Branch("WDirection", &wDirection, "WDirection/I");
351  trackerTree->Branch("PosR", &posR, "PosR/F");
352  trackerTree->Branch("PosPhi", &posPhi, "PosPhi/F");
353  trackerTree->Branch("PosEta", &posEta, "PosEta/F");
354  trackerTree->Branch("PosX", &posX, "PosX/F");
355  trackerTree->Branch("PosY", &posY, "PosY/F");
356  trackerTree->Branch("PosZ", &posZ, "PosZ/F");
357 
358  for(std::vector<TrackerTreeVariables>::const_iterator iTree = vTkTreeVar_.begin(); iTree != vTkTreeVar_.end(); ++iTree){
359  rawId = (*iTree).rawId;
360  subdetId = (*iTree).subdetId;
361  layer = (*iTree).layer;
362  side = (*iTree).side;
363  half = (*iTree).half;
364  rod = (*iTree).rod;
365  ring = (*iTree).ring;
366  petal = (*iTree).petal;
367  blade = (*iTree).blade;
368  panel = (*iTree).panel;
369  outerInner = (*iTree).outerInner;
370  module = (*iTree).module;
371  rodAl = (*iTree).rodAl;
372  bladeAl = (*iTree).bladeAl;
373  nStrips = (*iTree).nStrips;
374  isDoubleSide = (*iTree).isDoubleSide;
375  isRPhi = (*iTree).isRPhi;
376  uDirection = (*iTree).uDirection;
377  vDirection = (*iTree).vDirection;
378  wDirection = (*iTree).wDirection;
379  posR = (*iTree).posR;
380  posPhi = (*iTree).posPhi;
381  posEta = (*iTree).posEta;
382  posX = (*iTree).posX;
383  posY = (*iTree).posY;
384  posZ = (*iTree).posZ;
385 
386  trackerTree->Fill();
387  }
388  edm::LogInfo("TrackerTreeGenerator") << "TrackerTree contains "<< vTkTreeVar_.size() <<" entries overall";
389 }
module()
Definition: vlib.cc:994
T * make(const Args &...args) const
make new ROOT object
TFileDirectory mkdir(const std::string &dir, const std::string &descr="")
create a new subdirectory
Definition: TFileService.h:69
edm::Service< TFileService > fileService
std::vector< TrackerTreeVariables > vTkTreeVar_
static uInt32 F(BLOWFISH_CTX *ctx, uInt32 x)
Definition: blowfish.cc:281
Definition: vlib.h:208

Member Data Documentation

const bool TrackerTreeGenerator::createEntryForDoubleSidedModule_
private

Definition at line 86 of file TrackerTreeGenerator.cc.

Referenced by analyze().

edm::ParameterSet TrackerTreeGenerator::theParameterSet
private

Definition at line 88 of file TrackerTreeGenerator.cc.

std::vector<TrackerTreeVariables> TrackerTreeGenerator::vTkTreeVar_
private

Definition at line 87 of file TrackerTreeGenerator.cc.

Referenced by analyze(), and endJob().