00001 //////////////////////////////////////////////////////////////////////// 00002 // $Id: AlignTPCDrift.h,v 1.2 2007/03/01 19:36:38 lebedev Exp $ 00003 // 00004 // lebedev@physics.harvard.edu 00005 //////////////////////////////////////////////////////////////////////// 00006 00007 #ifndef ALIGN_TPC_DRIFT_H 00008 #define ALIGN_TPC_DRIFT_H 00009 00010 #include "JobControl/JobCModuleFactory.h" 00011 #include <vector> 00012 #include <string> 00013 00014 class SwimMIPP; 00015 00016 //...................................................................... 00017 /// @author lebedev@physics.harvard.edu 00018 /// 00019 class AlignTPCDrift : public JobCModule { 00020 public: 00021 typedef struct { 00022 int fNTPCHit; 00023 float fPadX[128]; 00024 float fPadZ[128]; 00025 float fDriftT[128]; 00026 00027 int fNChamHit; 00028 float fChamZ[36]; 00029 float fU[36]; 00030 float fW[36]; 00031 float fCosA[36]; 00032 float fSinA[36]; 00033 double fPar[5]; 00034 double fZ0; 00035 SwimMIPP* fSwim; 00036 } TrkInfo_t; 00037 00038 AlignTPCDrift(const char* version); 00039 ~AlignTPCDrift(); 00040 00041 JobCResult Ana(const EDMEventHandle& evt); 00042 00043 void NewRun(int run, int subrun); 00044 void EndRun(int run, int subrun); 00045 00046 void Update(const CfgConfig& c); 00047 00048 static void MinFCN(int& /*npar*/, double* /*gin*/, double& f, 00049 double* par, int /*iflag*/); 00050 00051 private: 00052 double ComputeTrkChi2(TrkInfo_t& trk); 00053 00054 private: 00055 static AlignTPCDrift* gModule; 00056 00057 std::vector<TrkInfo_t> fTrkInfo; 00058 double fXOffset; 00059 double fYOffset; 00060 double fZOffset; 00061 double fTrigOffset; 00062 00063 int fDebug; // Controls level of debug printing 00064 std::vector<float> fInitParam; 00065 std::vector<int> fFixParam; 00066 std::string fFolder; 00067 int fMinTrkVtx; 00068 int fRequireBeamTrk; 00069 int fMinTPCHits; 00070 int fMaxTPCHits; 00071 int fMinChamHits; 00072 float fMinP; 00073 float fMinGoF; 00074 float fTPCSigmaX; 00075 float fTPCSigmaY; 00076 float fMinTrkTime; 00077 float fMaxTrkTime; 00078 00079 }; 00080 00081 #endif // ALIGN_TPC_DRIFT_H 00082 00083 ////////////////////////////////////////////////////////////////////////
1.4.7