StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
StFtpcLaserCalib.hh
1 // $Id: StFtpcLaserCalib.hh,v 1.5 2009/10/14 15:59:55 jcs Exp $
2 //
3 // $Log: StFtpcLaserCalib.hh,v $
4 // Revision 1.5 2009/10/14 15:59:55 jcs
5 // changes to be able to vary the gas temperature in addition to varying t0 and
6 // gas composition
7 //
8 // Revision 1.4 2008/05/15 21:12:49 jcs
9 // replace StMagUtilities.h with StarMagField.h - necessary for HELIX_FIT
10 //
11 // Revision 1.3 2006/04/04 10:57:05 jcs
12 // Fix memory leak
13 //
14 // Revision 1.2 2006/03/15 15:13:57 jcs
15 // add lines for listing CVS update info
16 //
17 
18 #ifndef STAR_StFtpcLaserCalib
19 #define STAR_StFtpcLaserCalib
20 
21 #include "TMinuit.h"
22 
23 #include "StFtpcLaser.hh"
24 #include "StFtpcLaserTrafo.hh"
25 #include "StarMagField/StarMagField.h"
26 
27 const Float_t radcutmin[11]={0,8.5,10.5,12.5,14.5,16.5,18.5,21,22.5,25,26.5};
28 const Float_t radcutmax[11]={0,10,11.5,14,15.5,18,20,22,24,26,28};
29 
30 const Float_t radcutminst[4]={0,9,18,27};
31 const Float_t radcutmaxst[4]={0,13.5,21,30};
32 
33 const Float_t zfieldcage=263.0;
34 const Float_t Rad2Grad=180/TMath::Pi();
35 
36 // define functions etc. used for fit
37 //static Double_t funcxz(float x,float z,Double_t *par);
38 //static Double_t funcyz(float y,float z,Double_t *par);
39 //static void fcn(Int_t &npar, Double_t *gin, Double_t &f, Double_t *par, Int_t iflag);
40 
41 //TMinuit *mMinuit;
42 
43 // im prinzip unschoen !!! Warning : defined but not used !!!
44 //static Double_t arglist[10];
45 //static Int_t ierflg, nhits;
46 //static Float_t z[11],x[11],y[11];
47 //static Float_t ex[11],ey[11];
48 //static Float_t x_s[11],y_s[11];
49 
50 
52 {
53 
54  private:
55 
56  TMinuit *mMinuit;
57 
58  //Float_t radius[11],phi[11],z[11],x[11],y[11],ex[11],ey[11];
59  Float_t phi[11];//,ex[11],ey[11];
60  Float_t calcrad[11],calcphi[11],calcx[11],calcy[11];
61  Float_t ppos[11],ppossigma[11],rpol[11],timepos[11];
62  Float_t resx[11],resy[11],resrad[11],resphi[11];
63  Float_t resx2[11],resy2[11],resrad2[11],resphi2[11];
64  Float_t maxadc[11],padl[11],timel[11],charge[11];
65  Float_t x_s[11],y_s[11];
66  Float_t x_d[11],y_d[11];
67  Int_t hsec[11], softsec[11], softrow[11];
68 
69  Float_t MINZ,MAXZ,MINRAD,MAXRAD,GAUSFIT;
70  //Int_t FTPC,LSEC,STRAIGHT,usedfit;
71  float deltat0, deltagas,deltaTemp;
72 
73  TString filename;
74 
75  StFtpcLaserTrafo *mtrafo;
76 // StMagUtilities *magf;
77  StarMagField *magf;
78 
79  //TMinuit *gMinuit;
80  Double_t arglist[10];
81  Int_t ierflg;
82 
83  //void fcn(Int_t &npar, Double_t *gin, Double_t &f, Double_t *par, Int_t iflag);
84 
85  //TH1F *hresx,*hresy,*hresrad,*hresphi;
86  //TH1F *hphi, *hrad,*hpad, *hpadsigma;
87  //TH2F *hresrad2,*hresphi2,*hpadrad;
88 
89  //TH1F *hpadcut[11], *hradcut[11];
90 
91  protected:
92 
93  public:
94 
95  TFile *outfile;
96  //ofstream padfile,padfile2;
97 
98  Int_t FTPC,LSEC,STRAIGHT,usedfit;
99 
100  Int_t trcharge;
101  Float_t p,pt,invp,invpt;
102 
103  TH1F *hresx,*hresy,*hresrad,*hresphi;
104  TH1F *hhresx,*hhresy,*hhresrad,*hhresphi;
105  TH1F *hphi, *hrad,*hpad, *hpadsigma, *htime;
106  TH2F *hresrad2,*hresphi2,*hpadrad;
107  TH2F *hhresrad2,*hhresphi2;
108  TH2F *hhresx2,*hhresy2;
109  TH2F *hresx2,*hresy2;
110  TH1F *hradpol,*hcalcrad,*hcalcphi;
111  TH2F *hradz, *hphiz;
112  TH1F *htimel,*hpadl,*hmaxadc,*hcharge;
113  TH1F *hnhits;
114 
115  TH1F *hbdiffx,*hbdiffy;
116  TH2F *hbdiffx2,*hbdiffy2;
117 
118  TH1F *htrcharge, *hp, *hpt, *hinvp, *hinvpt;
119 
120  TH1F *hpadcut[11], *hradcut[11], *hradpolcut[5];
121 
122  Float_t radius[11];
123 
125  StFtpcLaserCalib(int ftpc, int lsec, int straight, int gfit, int minz, int maxz, int minrad, int maxrad, float gt0, float ggas, float gTemp, StFtpcLaserTrafo *trafo,StarMagField *gmagf);
126  virtual ~StFtpcLaserCalib();
127 
128  //Double_t funcxz(float x,float z,Double_t *par);
129  //Double_t funcyz(float y,float z,Double_t *par);
130  //void fcn(Int_t &npar, Double_t *gin, Double_t &f, Double_t *par, Int_t iflag);
131 
132  void MakeOutput(TString eingabe,char* t0, char* gas, float gastemp);
133  void MakePs();
134  bool cut(int i);
135  void Fill(int l);
136  void minuit_init();
137  void minuit_set_par();
138  void minuit_print();
139  void calc_res();
140  int laser_fit(int getnhits);
141  void defl_angle_transv();
142  void defl_histograms_st();
143  void defl_histograms();
144  void extrapol_histograms();
145  void fill_defl_histograms(float getrad, float getpadpos);
146  void fill_defl_histograms_st(float getrad, float getpadpos);
147  void fill_extrapol_histograms(float getradpol);
148  void analyse_defl();
149  void fillarray(float tx,float ty,float tz,float tex,float tey,int n,int nsec,float gppos,float gppossigma, int gsofstsec, int gsoftrow,float gtimepos, float getpadl, float gettimel, float getmaxadc, float getcharge);
150  void PositionLog();
151 
152 };
153 
154 #endif