/home/bes3soft/bes3soft/Boss/7.0.2/dist/7.0.2/Mdc/MdcAlignAlg/MdcAlignAlg-00-01-04/MdcAlignAlg/Millepede.h

Go to the documentation of this file.
00001 #ifndef MILLEPEDE_H 
00002 #define MILLEPEDE_H 1
00003 
00011 #include <vector>
00012 #include "MdcAlignAlg/Alignment.h"
00013 
00014 using namespace Alignment;
00015 
00016 class Millepede{
00017 public: 
00019   Millepede();
00020   ~Millepede( ); 
00021 
00023   bool initialize();
00024 
00025   bool InitMille(bool DOF[], double Sigm[], int nglo
00026                  , int nloc, double startfact, int nstd 
00027                  , double res_cut, double res_cut_init);
00028   bool MakeGlobalFit(double par[], double error[], double pull[]);
00029   bool ParGlo(int index, double param);
00030   bool ParSig(int index, double sigma);
00031   bool ConstF(double dercs[], double rhs);
00032   bool EquLoc(double dergb[], double derlc[], double dernl[], double rmeas, double sigma);
00033   bool ZerLoc(double dergb[], double derlc[], double dernl[]);
00034   bool FitLoc(int n, double track_params[], int single_fit);
00035   int  GetTrackNumber();
00036   void SetTrackNumber(int value);
00037 
00038 private:
00039 
00040 // Option set-up here 
00041 
00042 /* the following 4 statements are moved to Alignment.h by wulh on 06/08/29 */
00043 //   static const bool m_iteration  = true;   //  */
00044 //   static const bool debug_mode   = false;   // More printouts */
00045 //   static const bool verbose_mode = false;  // Definitely more printouts (matrices,...) */
00046 //   static const bool verbose_reject = false;//\* added by wulh on 06/08/28 *\/ */
00047 
00048 
00049 // Max. dimensions
00050 
00051   static const int mglobl               = 400; // Max. number of global parameters
00052   static const int mlocal               = 20;  // Max. number of local parameters
00053   static const int mcs                  = 10;  // Max. number of constraint equations
00054   static const int mgl                  = 410; // mglobl+mlocal
00055 
00056 
00057 // Private methods 
00058 
00059   bool InitUn (double cutfac);
00060   bool PrtGlo();
00061 
00062   double ErrPar(int i);
00063   double CorPar(int i, int j);
00064   int  SpmInv(double v[][mgl], double b[], int n, double diag[], bool flag[]);
00065   int  SpmInv(double v[][mlocal], double b[], int n, double diag[], bool flag[]);
00066   bool SpAVAt(double v[][mlocal], double a[][mlocal], double w[][mglobl], int n, int m);
00067   bool SpAX(double a[][mlocal], double x[], double y[], int n, int m);
00068   double chindl(int n, int nd);
00069 
00070 // Matrices
00071 
00072   double cgmat[mgl][mgl];
00073   double clmat[mlocal][mlocal];
00074   double clcmat[mglobl][mlocal];
00075   double corrm[mglobl][mglobl];
00076   double adercs[mcs][mglobl];
00077 
00078 
00079 // Vectors and useful variables
00080 
00081   double corrv[mglobl], psigm[mglobl], pparm[mglobl], dparm[mglobl];
00082   double scdiag[mglobl], blvec[mlocal], arhs[mcs], diag[mgl], bgvec[mgl];
00083 
00084   int indgb[mglobl], nlnpa[mglobl], indnz[mglobl], indbk[mglobl], indlc[mlocal];
00085   
00086   bool scflag[mglobl];
00087 
00088   std::vector<int>     indst;
00089   std::vector<double>  arest;
00090   std::vector<double>  arenl;
00091 
00092   std::vector<int>     storeind;
00093   std::vector<int>     storeplace;
00094   std::vector<double>  storeare;
00095   std::vector<double>  storenl;
00096 
00097   int store_row_size;
00098 
00099   int m_track_number;
00100   double m_residual_cut_init;
00101   double m_residual_cut;
00102 
00103   double cfactr, cfactref;
00104 
00105   int itert, nst, nfl, ncs, nstdev;
00106   int loctot, locrej, nagb, nalc, nrank; 
00107 
00108 };
00109 #endif // MILLEPEDE_H 

Generated on Tue Nov 29 23:12:47 2016 for BOSS_7.0.2 by  doxygen 1.4.7