• Main Page
  • Namespaces
  • Classes
  • Files
  • File List
  • File Members

/Users/jmonk/Physics/ForIA/ForIA/AnalysisTools/TrackDicer.hh

Go to the documentation of this file.
00001 #ifndef FORIA_TRACKDICER_HH
00002 #define FORIA_TRACKDICER_HH
00003 
00004 #include "ForIA/IFourMomentum.hh"
00005 
00006 #include <gsl/gsl_rng.h>
00007 
00008 class TH2;
00009 
00010 namespace ForIA{
00011  
00012   
00014   class TrackDicer{
00015     
00016   public:
00017     
00018     enum Efficiency{NOMINAL, SYST_UP, SYST_DOWN};
00019     
00021     TrackDicer();
00022     
00024     void initialise(Efficiency effType=NOMINAL);
00025     
00027     double trackEfficiency(IFourMomentumConstPtr track)const;
00028     
00036     template<typename T>
00037     T remove(const T &tracks)const{
00038       
00039       T diced;
00040       
00041       for(typename T::const_iterator track = tracks.begin();
00042           track != tracks.end(); ++track){
00043         if(gsl_rng_uniform(m_randomGenerator) < trackEfficiency(*track)){
00044           diced.push_back(*track);
00045         }
00046       }
00047       return diced;
00048     }
00049     
00050   private:
00051 
00052     bool m_doInitialise;
00053     
00054     TH2 *m_efficiencyPlot;
00055     TH2 *m_efficiencySystematic;
00056     
00057     gsl_rng *m_randomGenerator;
00058     
00059     Efficiency m_efficiencyType;
00060     
00061   };
00062 }
00063 
00064 #endif

Generated on Mon Jul 30 2012 16:56:35 for ForIA by  doxygen 1.7.2