VMinMethodFunctor.h
Go to the documentation of this file.
1 #ifndef _MdLDFFinderAG_VMinMethodFunctor_h_
2 #define _MdLDFFinderAG_VMinMethodFunctor_h_
3 
12 #include <mevt/MEvent.h>
13 #include <mdet/MDetector.h>
14 #include <utl/AxialVector.h>
15 
16 #include <boost/tuple/tuple.hpp>
17 #include <vector>
18 #include <ostream>
19 
20 #include "VLDFFunctor.h"
21 
22 #include <Minuit2/MnMinimize.h>
23 #include <Minuit2/MnHesse.h>
24 #include <Minuit2/FCNBase.h>
25 #include <Minuit2/FunctionMinimum.h>
26 #include <Minuit2/MnUserParameters.h>
27 #include <Minuit2/MnUserCovariance.h>
28 #include <Minuit2/MnPrint.h>
29 
30 namespace MdLDFFinderAG {
31 
32  class VLDFFunctor;
33 
34 // typedef std::vector< boost::tuple<double, unsigned int , std::vector< unsigned int > > > ModuleList; // area projected in the shower plane, number of strips, strips with signals in each time window
35  typedef std::vector<mevt::Counter*> CounterListBase;
36 
37  class CounterList: public CounterListBase {
38  public:
39  friend std::ostream& operator<<(std::ostream& os, const CounterList& dt);
40  };
41 
53  class VMinMethodFunctor: public ROOT::Minuit2::FCNBase {
54 
55  public:
56 
57  enum FitParameter {
59  eBeta = 1,
60  eCoreX = 2,
61  eCoreY = 3
62  };
63 
72  virtual double operator()( const std::vector<double>& par ) const = 0;
73  virtual double Up() const = 0;
74  ROOT::Minuit2::FunctionMinimum Minimize( std::vector<double>& par, std::vector<double>& epar, const std::vector<bool>& fpar ) const;
78  virtual ~VMinMethodFunctor();
79 
80  void SetZcore(double z) {zcore = z;}
81  double GetZcore() const { return zcore; }
82 
83  void SetAxis(utl::Vector axis);
84  utl::Vector GetAxis() const { return rAxis; }
85 
86  double DistanceInShowerPlane(const utl::Vector v) const {
87  return utl::cross( rAxis, v ).GetMag() ;
88  }
89 
92 
93  protected:
94 
95  double zcore; // z coordinate of the core position (fixed parameter for the reconstruction)
97  double cosTheta;
98 
100 
102  unsigned int fSilentLimit;
103 
106 
108 
116  double CalculateSilentLikelihood(const std::vector<double>& par) const;
117 
118  };
119 
120 }
121 #endif // _MdLDFFinderAG_VMinMethodFunctor_h_
AxialVector cross(const Vector &l, const Vector &r)
vector cross product
Definition: OperationsAV.h:32
void SetSilentCounterList(CounterList cl)
void SetCandidateCounterList(CounterList cl)
ROOT::Minuit2::FunctionMinimum Minimize(std::vector< double > &par, std::vector< double > &epar, const std::vector< bool > &fpar) const
double DistanceInShowerPlane(const utl::Vector v) const
double GetMag() const
Definition: AxialVector.h:56
boost::shared_ptr< const CoordinateTransformer > CoordinateSystemPtr
Shared pointer for coordinate systems.
utl::CoordinateSystemPtr siteCS
std::vector< mevt::Counter * > CounterListBase
Common interface for functors performing the muon LDF fitting.
Definition: VLDFFunctor.h:26
double CalculateSilentLikelihood(const std::vector< double > &par) const
Likelihood of silent counters.
friend std::ostream & operator<<(std::ostream &os, const CounterList &dt)
virtual double operator()(const std::vector< double > &par) const =0
Perform the actual count.
Vector object.
Definition: Vector.h:30
virtual double Up() const =0
virtual ~VMinMethodFunctor()
Meant to be used as base class: virtual destructor.
Common interface for functors performing the muon LDF fitting.

, generated on Tue Sep 26 2023.