Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

Circe.h

Go to the documentation of this file.
00001 
00002 
00003 
00004 
00005 
00006 
00007 #ifndef TRACKFIT_CIRCE_H
00008 #define TRACKFIT_CIRCE_H
00009 #include <vector>
00010 #include "Math/Minimizer.h"
00011 namespace recobase { 
00012   class CellHit; 
00013   class Prong; 
00014 }
00015 
00016 namespace trk
00017 {
00019   class Measurement {
00020   public:
00021     std::vector<const recobase::CellHit*> fHits;  
00022     std::vector<double>                   fW;     
00023   };
00024   
00032   class Circe : public ROOT::Math::IMultiGenFunction {
00033   public:
00035     static const unsigned int kNmax = 20;
00036   public:
00037     Circe() { }
00038 
00039     void   SeedProngs(const Measurement* meas, 
00040                       unsigned int       nprong,
00041                       double*            seed) const;
00042     double Fit(int nprog, const Measurement* m);
00043     void   MakeProngs(std::vector<recobase::Prong>& prong);
00044 
00045     // Complete the IMultiGenFunction interface
00046     unsigned int                   NDim()                  const;
00047     double                         DoEval(const double* p) const;
00048     ROOT::Math::IMultiGenFunction* Clone()                 const;
00049     
00050   private:
00051     const Measurement* fM;            
00052     unsigned int       fN;            
00053     double             fVtx[3];       
00054     double             fTheta[kNmax]; 
00055     double             fPhi[kNmax];   
00056     std::vector<int>   fProngAssn;    
00057   };
00058 }
00059 
00060 #endif
00061 

Generated on Mon Nov 23 04:45:25 2009 for NOvA Offline by  doxygen 1.3.9.1