WCSimIsoChronTransform.hh

Go to the documentation of this file.
00001 #ifndef WCSIMISOCHRONTRANSFORM_HH
00002 #define WCSIMISOCHRONTRANSFORM_HH
00003 
00004 #include "TH3.h"
00005 #include "TH2.h"
00006 #include "TH1.h"
00007 #include "TGraph.h"
00008 #include "TObject.h"
00009 #include "TVector3.h"
00010 #include "WCSimRecoCluster.hh"
00011 #include "WCSimWaterModel.hh"
00012 #include <iostream>
00013 #include <vector>
00014 
00015 using namespace std;
00016 
00017 class WCSimIsoChronTransform : public TObject {
00018 
00019  public: 
00020 
00021   WCSimIsoChronTransform();
00022   WCSimIsoChronTransform(Double_t nBinsV, Double_t binscale);
00023   ~WCSimIsoChronTransform();
00024 
00025   void Reset();
00026 
00027   TH3D* IsoChronTransform(WCSimRecoCluster* theHits);
00028   void ApplyTransform(vector< vector<double> > thehits, vector<double> VxHypothesis);
00029   void ApplyTransformChromCorrected(vector< vector<double> > thehits, vector<double> VxHypothesis, Int_t ncolorbins, Double_t lowcolor, Double_t highcolor);
00030   void ProcessHit(vector<double> aHit, vector<double> VxHypothesis);
00031   void ProcessHitChromCorr(vector<double> aHit, vector<double> VxHypothesis, Int_t ncolorbins, Double_t lowcolor, Double_t highcolor);
00032   void SetConstantIndexofRefraction(double newn);
00033   void SetConstantSpeedofParticle(double newc);
00034   void AddWaterModel(WCSimWaterModel* wm);
00035   vector<double> FillIsoChronRing_pixel(vector<double> VxHypothesis, TVector3 hvect, vector<double> priorpixel, Double_t alpha, Double_t s1, Double_t theweight);
00036   Double_t CalcMaxAlpha(Double_t dD, Double_t dT, Double_t theindex);
00037   Double_t CalcMaxEmissionAngle(Double_t dD, Double_t dT, Double_t theindex);
00038   Double_t CalcS1(Double_t alpha, Double_t dD, Double_t dT, Double_t theindex);
00039   Double_t CalcS2(Double_t alpha, Double_t dD, Double_t dT, Double_t theindex);
00040   Double_t CalcAlpha(Double_t s1, Double_t dD, Double_t dT, Double_t theindex);
00041   TGraph* IndexVsS1(Double_t dD, Double_t dT);
00042 
00043   TH1D* getBCDist();
00044   TH1D* getMaxAlphaDist();
00045   TH1D* getMaxThetaCDist();
00046   TH1D* getMinS1Dist();
00047   TH1D* getnDist();
00048   TH2D* getS1vsAlpha();
00049 
00050   TH2D* XYProjection();
00051   TH2D* XZProjection(double bclimit);
00052   TH2D* YZProjection();
00053 
00054   TH2D* XYSlice();
00055   TH2D* XZSlice();
00056   TH2D* YZSlice();
00057 
00058  private: 
00059 
00060   WCSimWaterModel *_theWM;
00061 
00062   vector< vector<double> > isochronarray;
00063 
00064   TH3D* _htrackreco;
00065   TH3D** _htrackreco_color;
00066   TH3D** _htrackreco_resolution;
00067   double _n,_c;
00068   TH1D* _thexb;
00069   TH1D* _theyb;
00070   TH1D* _thezb; 
00071   TH2D* theprojxz;
00072   TH2D* theprojxy;
00073   TH2D* theprojyz;
00074 
00075   TH1D* _maxAlphadist;
00076   TH1D* _maxThetaCdist;
00077   TH1D* _bcontentsdist;
00078   TH1D* _minS1dist;
00079   TH1D* _nDist;
00080   TH2D* _S1vsAlphadist;
00081 
00082   int nbx;
00083   int nby;
00084   int nbz;
00085   double lx;
00086   double hx;
00087   double ly;
00088   double hy;
00089   double lz;
00090   double hz;
00091 
00092   bool iswatermodel;
00093   bool usewatermodel;
00094 
00095   ClassDef(WCSimIsoChronTransform,0)
00096 };
00097 
00098 #endif