Main Page   Namespace List   Class Hierarchy   Compound List   File List   Compound Members   File Members  

VertexObserver Struct Reference

List of all members.

Public Methods

 VertexObserver ()
 ~VertexObserver ()
void upDate (G3SetUp *su)
void upDate (G3EventProxy *ev)

Public Attributes

int nbVertices_
SimpleConfigurable< string > vertexReconstructorName_
SimpleConfigurable< string > trackReconstructorName_
TrackReconstructor * trackReconstructor_

Constructor & Destructor Documentation

VertexObserver::VertexObserver   [inline]
 

Definition at line 38 of file XANAVertex.cpp.

References nbVertices_, trackReconstructor_, trackReconstructorName_, and vertexReconstructorName_.

00039    : nbVertices_(0), trackReconstructor_(0)
00040    { 
00041     // initialize observer
00042     Observer<G3EventProxy *>::init() ;      
00043     Observer<G3SetUp *>::init() ;      
00044 
00045     // steering
00046     vertexReconstructorName_=
00047      SimpleConfigurable<string>("PVRVertex","XANAVertex:VertexReconstructor");
00048     trackReconstructorName_=
00049 //     SimpleConfigurable<string>("FKfTracks","XANAVertex:TrackReconstructor");
00050      SimpleConfigurable<string>("FKfTracks","XANAVertex:TrackReconstructor");
00051     // initialisation of tracking algo must be done in observing G3SetUp       
00052    }

VertexObserver::~VertexObserver   [inline]
 

Definition at line 54 of file XANAVertex.cpp.

References nbVertices_, xana::out, and trackReconstructor_.

00055    {
00056     delete trackReconstructor_;
00057     xana::out(1)<<"[OVAL] number of vertices : "<<nbVertices_<<endl ;
00058    }


Member Function Documentation

void VertexObserver::upDate G3EventProxy *    ev [inline]
 

Definition at line 74 of file XANAVertex.cpp.

References XANAVertex::addTrack, xana::out, XANATrack::setAlgoName, XANATrack::setCharge, XANATrack::setChi2OverDof, XANATrack::setImpactParameter, XANATrack::setLongImpactParameter, XANATrack::setMomentumAtFirstPoint, XANATrack::setMomentumAtLastPoint, XANATrack::setMomentumAtVertex, XANATrack::setNumberOfHits, XANATrack::setNumberOfLostHits, XANATrack::setPositionAtFirstPoint, XANATrack::setPositionAtLastPoint, XANATrack::setTransImpactParameter, trackReconstructorName_, and vertexReconstructorName_.

00075    { 
00076     
00077     if (!ev) return ;    
00078   
00079     RecItr<TTrack> track(ev->recEvent(),trackReconstructorName_.value().c_str());
00080     while (track.next()) { 
00081       xana::out(1) << "new reconstructed track " << std::endl; 
00082       TrajectoryStateOnSurface ts = (*track).impactPointState() ;
00083       xana::out(1) << "(*track).impactPointState() " <<(*track).impactPointState() << std::endl;      
00084       TrajectoryStateOnSurface tsi = (*track).innermostState() ;
00085       xana::out(1) << "(*track).innermostState() " <<(*track).innermostState() << std::endl;      
00086       TrajectoryStateOnSurface tso = (*track).outermostState() ;
00087       xana::out(1) << "(*track).outermostState() " <<(*track).outermostState() << std::endl;      
00088       HepVector3D momentumAtVertex(track->momentumAtVertex().x(), 
00089        track->momentumAtVertex().y(),track->momentumAtVertex().z());
00090       xana::out(1) << "(*track).momentumAtVertex() " <<(*track).momentumAtVertex() << std::endl;      
00091       HepVector3D momentumAtFirst(tsi.globalMomentum().x(),tsi.globalMomentum().y(),
00092         tsi.globalMomentum().z());
00093       HepVector3D momentumAtLast(tso.globalMomentum().x(),tso.globalMomentum().y(),
00094         tso.globalMomentum().z());
00095    }    
00096     AutoRecCollection<RecoVertex, G3EventProxy *> vertices(vertexReconstructorName_.value().c_str());
00097         
00098     // construct XANAVertex from RecoVertex
00099     vector<XANAVertex> xVertices;
00100     XANAVertex *xVertex=0;
00101     XANATrack *xTrack=0;
00102     for(AutoRecCollection<RecoVertex, G3EventProxy *>::const_iterator iv=vertices.begin(); 
00103      iv!=vertices.end(); iv++) {
00104       HepPoint3D position((*iv)->position().x(),(*iv)->position().y(), 
00105        (*iv)->position().z()); 
00106       xVertex = new XANAVertex(position, (*iv)->totalChiSquared(), 
00107        (*iv)->degreesOfFreedom(), vertexReconstructorName_.value().c_str());
00108       // then add constituent tracks 
00109       xana::out(1) << "vertex found, loop on constituent tracks " << std::endl;
00110       vector <RefittedRecTrack> refTracks = (*iv)->refittedTracks();
00111       for  (vector<RefittedRecTrack>::const_iterator it=refTracks.begin();
00112        it!=refTracks.end(); it++) {
00113         xana::out(1) << "new refitted track " << std::endl;
00114         TrajectoryStateOnSurface tsi = it->innermostState() ;
00115         xana::out(1) << "(*track).innermostState() " <<(*track).innermostState() << std::endl;      
00116         TrajectoryStateOnSurface tso = it->outermostState() ;
00117         xana::out(1) << "(*track).outermostState() " <<(*track).outermostState() << std::endl;      
00118         // acessing track params if vertex exists is buggy but tsi, tso OK
00119         GlobalVector momentum = it->momentumAtVertex();
00120         xana::out(1) << "tsi.momentum " << tsi.globalMomentum() << std::endl;
00121         HepVector3D momentumAtVertex;
00122          momentumAtVertex=HepVector3D(momentum.x(),
00123          momentum.y(), momentum.z());
00124         xana::out(1) << "momentum at vertex " << momentumAtVertex << std::endl;        
00125       } 
00126       // this is needed otherwise access to originaltracks params is buggy
00127       vector<RecTrack> recTracks = (*iv)->originalTracks();
00128       for  (vector<RecTrack>::const_iterator it=recTracks.begin();
00129        it!=recTracks.end(); it++) {
00130         xana::out(1) << "new original track " << std::endl;
00131         TrajectoryStateOnSurface tsi = it->innermostState() ;
00132         xana::out(1) << "(*track).innermostState() " <<(*track).innermostState() << std::endl;      
00133         TrajectoryStateOnSurface tso = it->outermostState() ;
00134         xana::out(1) << "(*track).outermostState() " <<(*track).outermostState() << std::endl;      
00135         GlobalVector momentum = it->momentumAtVertex();
00136         HepVector3D momentumAtVertex;
00137          momentumAtVertex=HepVector3D(momentum.x(),
00138          momentum.y(), momentum.z());
00139         xana::out(1) << "momentum at vertex " << momentum << std::endl;
00140         HepPoint3D firstHit(tsi.globalPosition().x(),tsi.globalPosition().y(),
00141           tsi.globalPosition().z()); 
00142         HepVector3D momentumAtFirst(tsi.globalMomentum().x(),tsi.globalMomentum().y(),
00143           tsi.globalMomentum().z());
00144         HepPoint3D lastHit(tso.globalPosition().x(),tso.globalPosition().y(),
00145           tso.globalPosition().z()); 
00146         HepVector3D momentumAtLast(tso.globalMomentum().x(),tso.globalMomentum().y(),
00147           tso.globalMomentum().z());
00148         xTrack = new XANATrack; 
00149         xana::out(1) << "track created " << std::endl;
00150         xTrack->setCharge(it->charge()); 
00151         xTrack->setChi2OverDof(it->normalisedChiSquared());
00152         xTrack->setNumberOfHits(it->foundHits());
00153         xTrack->setNumberOfLostHits(it->lostHits());
00154         xTrack->setImpactParameter(it->impactParameter3D().value());
00155         xTrack->setLongImpactParameter(it->zImpactParameter().value());
00156         xTrack->setTransImpactParameter(it->transverseImpactParameter().value());
00157         xTrack->setMomentumAtVertex(momentumAtVertex);
00158         xTrack->setPositionAtFirstPoint(firstHit);
00159         xTrack->setMomentumAtFirstPoint(momentumAtFirst);
00160         xTrack->setPositionAtLastPoint(lastHit);
00161         xTrack->setMomentumAtLastPoint(momentumAtLast);
00162         xTrack->setAlgoName(trackReconstructorName_.value());
00163         xana::out(1) << "adding track " << std::endl;
00164         xVertex->addTrack(xTrack);
00165       } 
00166     }
00167      
00168     // read XANAVertices 
00169     vector<XANAVertex>::iterator iv;
00170     for (iv=xVertices.begin(); iv!=xVertices.end(); iv++)  
00171      {
00172       xana::out(1)<<"[OVAL] new vertex with position "<<iv->getPosition()<<endl ;
00173      }
00174    }

void VertexObserver::upDate G3SetUp *    su [inline]
 

Definition at line 60 of file XANAVertex.cpp.

References trackReconstructor_, and trackReconstructorName_.

00061    {    
00062     // defines Tracking algo  
00063     // beware! not to add to reconstructor! this is not a RecUnit 
00064     // this will use default propagator, trajectory builder, etc..
00065     TrackFinder *myTrackFinder = new ModularKfReconstructor(
00066      new CombinatorialSeedGeneratorFromPixel(0.8,0.1,15.),
00067      new CombinatorialTrajectoryBuilder,
00068      new KFFittingSmoother,
00069      new TrajectoryCleanerBySharedHits);
00070     trackReconstructor_ = 
00071      new TrackReconstructor(myTrackFinder,trackReconstructorName_.value().c_str()) ;
00072    }


Member Data Documentation

int VertexObserver::nbVertices_
 

Definition at line 33 of file XANAVertex.cpp.

Referenced by VertexObserver, and ~VertexObserver.

TrackReconstructor* VertexObserver::trackReconstructor_
 

Definition at line 36 of file XANAVertex.cpp.

Referenced by upDate, VertexObserver, and ~VertexObserver.

SimpleConfigurable<string> VertexObserver::trackReconstructorName_
 

Definition at line 35 of file XANAVertex.cpp.

Referenced by upDate, and VertexObserver.

SimpleConfigurable<string> VertexObserver::vertexReconstructorName_
 

Definition at line 34 of file XANAVertex.cpp.

Referenced by upDate, and VertexObserver.


The documentation for this struct was generated from the following file:
Generated on Tue May 10 10:01:37 2005 for XANADOO by doxygen1.2.14 written by Dimitri van Heesch, © 1997-2002