#include <CondDBCmsTrackerConstruction.h>
Public Member Functions | |
CondDBCmsTrackerConstruction () | |
const GeometricDet * | construct (const PGeometricDet &pgd) |
High level class to build a tracker. It will only build subdets, then call subdet builders
Definition at line 17 of file CondDBCmsTrackerConstruction.h.
CondDBCmsTrackerConstruction::CondDBCmsTrackerConstruction | ( | ) |
Definition at line 12 of file CondDBCmsTrackerConstruction.cc.
{ }
const GeometricDet * CondDBCmsTrackerConstruction::construct | ( | const PGeometricDet & | pgd | ) |
Definition at line 14 of file CondDBCmsTrackerConstruction.cc.
References PGeometricDet::pgeomdets_, patCandidatesForDimuonsSequences_cff::tracker, and GeometricDet::Tracker.
Referenced by TrackerGeometricDetESModule::produce().
{ //std::cout << "In CondDBCmsTrackerConstruction::construct with pgd.pgeomdets_.size() == " << pgd.pgeomdets_.size() << std::endl; GeometricDet* tracker = new GeometricDet(pgd.pgeomdets_[0],GeometricDet::Tracker); size_t detMax = pgd.pgeomdets_.size(); size_t tri = 1; std::vector<GeometricDet*> hier; int lev=1; GeometricDet* subdet = tracker; hier.push_back(subdet); while ( tri < detMax && pgd.pgeomdets_[tri]._level == 1 ) { subdet = new GeometricDet(pgd.pgeomdets_[tri], GeometricDet::GDEnumType(pgd.pgeomdets_[tri]._type)); //std::cout << lev << " type " << pgd.pgeomdets_[tri]._type << " " << subdet->geographicalId() << std::endl; ++tri; hier.back()->addComponent(subdet); hier.push_back(subdet); ++lev; while ( tri < detMax && pgd.pgeomdets_[tri]._level == 2 ) { subdet = new GeometricDet(pgd.pgeomdets_[tri], GeometricDet::GDEnumType(pgd.pgeomdets_[tri]._type)); //std::cout << lev << "\ttype " << pgd.pgeomdets_[tri]._type << " " << subdet->geographicalId() << std::endl; ++tri; hier.back()->addComponent(subdet); hier.push_back(subdet); ++lev; while ( tri < detMax && pgd.pgeomdets_[tri]._level == 3 ) { subdet = new GeometricDet(pgd.pgeomdets_[tri], GeometricDet::GDEnumType(pgd.pgeomdets_[tri]._type)); //std::cout << lev << "\t\ttype " << pgd.pgeomdets_[tri]._type << " " << subdet->geographicalId() << std::endl; ++tri; hier.back()->addComponent(subdet); hier.push_back(subdet); ++lev; while ( tri < detMax && pgd.pgeomdets_[tri]._level == 4 ) { subdet = new GeometricDet(pgd.pgeomdets_[tri], GeometricDet::GDEnumType(pgd.pgeomdets_[tri]._type)); //std::cout << lev << "\t\t\ttype " << pgd.pgeomdets_[tri]._type << " " << subdet->geographicalId() << std::endl; ++tri; hier.back()->addComponent(subdet); hier.push_back(subdet); ++lev; while ( tri < detMax && pgd.pgeomdets_[tri]._level == 5 ) { subdet = new GeometricDet(pgd.pgeomdets_[tri], GeometricDet::GDEnumType(pgd.pgeomdets_[tri]._type)); //std::cout << lev << "\t\t\t\ttype " << pgd.pgeomdets_[tri]._type << " " << subdet->geographicalId() << std::endl; ++tri; hier.back()->addComponent(subdet); hier.push_back(subdet); ++lev; while ( tri < detMax && pgd.pgeomdets_[tri]._level == 6 ) { subdet = new GeometricDet(pgd.pgeomdets_[tri], GeometricDet::GDEnumType(pgd.pgeomdets_[tri]._type)); //std::cout << lev << "\t\t\t\t\ttype " << pgd.pgeomdets_[tri]._type << " " << subdet->geographicalId() << std::endl; ++tri; hier.back()->addComponent(subdet); } --lev; hier.pop_back(); } --lev; hier.pop_back(); } --lev; hier.pop_back(); } --lev; hier.pop_back(); } --lev; hier.pop_back(); } // std::cout << "Before \"deep components\" test I want to see if I can iterate to 6 layers by myself..." << std::endl; // std::vector<const GeometricDet*> l0 = tracker->components(); // std::vector<const GeometricDet*>::const_iterator i0 = l0.begin(); // std::vector<const GeometricDet*>::const_iterator e0 = l0.end(); // int count=0; // count only the leaves. // for ( ; i0 != e0 ; ++i0) { // std::cout << lev << " type " << (*i0)->type() << " " << int((*i0)->geographicalId()) << std::endl; // std::vector<const GeometricDet*> l1 = (*i0)->components(); // if ( l1.size() == 0 ) ++count; // std::vector<const GeometricDet*>::const_iterator i1 = l1.begin(); // std::vector<const GeometricDet*>::const_iterator e1 = l1.end(); // ++lev; // for ( ; i1 != e1 ; ++i1) { // std::cout << lev << "\ttype " << (*i1)->type() << " " << int((*i1)->geographicalId()) << std::endl; // std::vector<const GeometricDet*> l2 = (*i1)->components(); // if ( l2.size() == 0 ) ++count; // std::vector<const GeometricDet*>::const_iterator i2 = l1.begin(); // std::vector<const GeometricDet*>::const_iterator e2 = l1.end(); // ++lev; // for ( ; i2 != e2 ; ++i2) { // std::cout << lev << "\t\ttype " << (*i2)->type() << " " << int((*i2)->geographicalId()) << std::endl; // std::vector<const GeometricDet*> l3 = (*i2)->components(); // if ( l3.size() == 0 ) ++count; // std::vector<const GeometricDet*>::const_iterator i3 = l3.begin(); // std::vector<const GeometricDet*>::const_iterator e3 = l3.end(); // ++lev; // for ( ; i3 != e3 ; ++i3) { // std::cout << lev << "\t\t\ttype " << (*i3)->type() << " " << int((*i3)->geographicalId()) << std::endl; // std::vector<const GeometricDet*> l4 = (*i3)->components(); // if ( l4.size() == 0 ) ++count; // std::vector<const GeometricDet*>::const_iterator i4 = l4.begin(); // std::vector<const GeometricDet*>::const_iterator e4 = l4.end(); // ++lev; // for ( ; i4 != e4 ; ++i4) { // std::cout << lev << "\t\t\t\ttype " << (*i4)->type() << " " << int((*i4)->geographicalId()) << std::endl; // std::vector<const GeometricDet*> l5 = (*i4)->components(); // if ( l5.size() == 0 ) ++count; // std::vector<const GeometricDet*>::const_iterator i5 = l5.begin(); // std::vector<const GeometricDet*>::const_iterator e5 = l5.end(); // ++lev; // for ( ; i5 != e5 ; ++i5) { // std::cout << lev << "\t\t\t\t\ttype " << (*i5)->type() << " " << int((*i5)->geographicalId()) << std::endl; // ++count; // // std::vector<const GeometricDet*> l6 = (*i0)->components(); // // std::vector<const GeometricDet*>::const_iterator i6 = l6.begin(); // // std::vector<const GeometricDet*>::const_iterator e6 = l6.end(); // // for ( ; i6 != e6 ; ++i6) { // // std::cout << lev << " type " << (*i6)->type() << " " << int((*i6)->geographicalId()) << std::endl; // // std::vector<const GeometricDet*> l1 = (*i0)->components(); // // std::vector<const GeometricDet*>::const_iterator i1 = l1.begin(); // // std::vector<const GeometricDet*>::const_iterator e1 = l1.end(); // // } // } // --lev; // } // --lev; // } // --lev; // } // --lev; // } // --lev; // } // std::cout << "done... count = " << count << std::endl; // std::cout << "about to try to see what the \"deep components\" are" << std::endl; // std::cout << "done with the \"deep components\" check, there are: " << tracker->deepComponents().size() << std::endl; return tracker; }