CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_5_3_1/src/TrackingTools/GsfTools/interface/MultiTrajectoryStateAssembler.h

Go to the documentation of this file.
00001 #ifndef _TrackerReco_MultiTrajectoryStateAssembler_h_
00002 #define _TrackerReco_MultiTrajectoryStateAssembler_h_
00003 
00004 // #include "Utilities/Notification/interface/TimingReport.h"
00005 #include "TrackingTools/TrajectoryState/interface/TrajectoryStateOnSurface.h"
00006 #include <vector>
00007 // #include <map>
00008 
00013 class MultiTrajectoryStateAssembler {
00014 
00015 private:
00016   typedef TrajectoryStateOnSurface TSOS;
00017   typedef std::vector<TrajectoryStateOnSurface> MultiTSOS;
00018 
00019 public:
00020   //
00021   // constructors
00022   //
00023   MultiTrajectoryStateAssembler ();
00024   
00028   void addState (const TrajectoryStateOnSurface);
00029 
00031   void addInvalidState (const double);
00032 
00036   TrajectoryStateOnSurface combinedState ();
00040   TrajectoryStateOnSurface combinedState (const float weight);
00041 
00042 
00043 private:
00047   void addStateVector (const MultiTSOS&);
00049   inline bool invalidCombinedState () const
00050   {
00051     //
00052     // Protect against empty combination (no valid input state)
00053     //
00054     return theStates.empty();
00055   }
00057   bool prepareCombinedState();
00061   TrajectoryStateOnSurface reweightedCombinedState (const double) const;
00065   void removeSmallWeights ();
00067   void removeWrongPz ();
00068 
00069 private:
00070   bool sortStates;
00071   float minValidFraction;
00072   float minFractionalWeight;
00073 
00074   bool combinationDone;
00075   bool thePzError;
00076 
00077   double theValidWeightSum;
00078   double theInvalidWeightSum;
00079   MultiTSOS theStates;
00080 
00081 //   static TimingReport::Item * theTimerAdd;
00082 //   static TimingReport::Item * theTimerComb;
00083 
00084 };
00085 
00086 #endif