16 #ifndef PNDDRCRECOLOOKUPMAP_H 17 #define PNDDRCRECOLOOKUPMAP_H 20 #include "TClonesArray.h" 25 #include "FairBaseParSet.h" 40 #include "TPolyLine.h" 42 #ifndef ROOT_TParticlePDG 43 #include "TParticlePDG.h" 45 #ifndef ROOT_TDatabasePDG 46 #include "TDatabasePDG.h" 61 virtual InitStatus
Init();
64 virtual void Exec(Option_t *option);
70 void SetNSigma(
double nsig = 3.) { fNSigma = nsig; }
72 void SetOutputFile(TString outName =
"PndDrcRecoLookupMap_output.root") { fOutputName = outName; }
76 const Int_t NRGBs = 5;
77 const Int_t NCont = 255;
79 Double_t stops[NRGBs] = {0.00, 0.34, 0.61, 0.84, 1.00};
80 Double_t red[NRGBs] = {0.00, 0.00, 0.87, 1.00, 0.51};
81 Double_t green[NRGBs] = {0.00, 0.81, 1.00, 0.20, 0.00};
82 Double_t blue[NRGBs] = {0.51, 1.00, 0.12, 0.00, 0.00};
83 TColor::CreateGradientColorTable(NRGBs, stops, red, green, blue, NCont);
84 gStyle->SetNumberContours(NCont);
90 Double_t theta = (180. - 2 * fGeo->
PipehAngle()) / fGeo->
BBoxNum() / 180. * 3.1415;
92 Double_t rad_out = 102.6;
93 Double_t rad_in = 49.15;
94 Double_t rp_out = rad_out /
cos(theta);
95 Double_t rp_in = rad_in /
cos(theta);
96 Double_t xout[4], yout[4], xin[4], yin[4];
97 for (Int_t
i = 0;
i < 4;
i++) {
98 xout[
i] = rp_out *
cos(2.0 * (
i - 1) * theta);
99 yout[
i] = rp_out *
sin(2.0 * (
i - 1) * theta);
100 xin[
i] = rp_in *
cos(2.0 * (
i - 1) * theta);
101 yin[
i] = rp_in *
sin(2.0 * (
i - 1) * theta);
102 TLine *l1 =
new TLine(xout[
i], yout[i], xin[i], yin[i]);
105 TPolyLine *p1 =
new TPolyLine(4, xout, yout);
106 p1->SetFillColor(kYellow);
108 TPolyLine *p2 =
new TPolyLine(4, xin, yin);
116 void ProcessPhotonHit();
117 void ProcessPhotonMC();
121 void ProcessBarHit();
131 Double_t fPipehAngle;
138 virtual void SetParContainers();
141 Double_t InBarCoordSyst(TVector3, TVector3 *, TVector3 *, TVector3 *, TVector3 *);
142 Double_t SectorNum(Double_t, Double_t);
143 Int_t NumberOfBounces(TVector3, TVector3, Int_t);
144 Double_t FindOutPoint(Double_t, Double_t, Double_t, Double_t *, Bool_t);
145 Double_t CherenkovPhi(TVector3, TVector3, Double_t *, Double_t *);
146 Double_t RecoAmbigTime(TVector3, TVector3, Double_t *, Bool_t);
147 void DrawBarBox(TVector3, TVector3, TVector3, TVector3);
150 TClonesArray *fBarPointArray;
151 TClonesArray *fPDPointArray;
152 TClonesArray *fHitArray;
153 TClonesArray *fPDHitArray;
154 TClonesArray *fMCArray;
155 TClonesArray *fDigiArray;
158 TClonesArray *fDrcLutInfoArray;
166 void SetDefaultParameters();
176 Double_t fHAngleInBDeg;
210 Double_t fkxBar, fkyBar, fkzBar;
211 Double_t fPxMoBar, fPyMoBar, fPzMoBar;
212 Double_t fxnew, fynew;
216 TVector3 fStartVertex;
226 std::vector<TH1F *> PhiThetaPoints;
227 std::vector<TH1F *> PhiThetaPointsCut;
228 std::vector<TH1F *> PhiThetaPointsWeight;
229 std::vector<TH1F *> NboPoints;
friend F32vec4 cos(const F32vec4 &a)
friend F32vec4 sin(const F32vec4 &a)
void SetNSigma(double nsig=3.)
virtual void Exec(Option_t *option)
void SetHistoWidth(double wid=0.01)
void SetOutputFile(TString outName="PndDrcRecoLookupMap_output.root")
Class to access the naming information of the MVD.
virtual ~PndDrcRecoLookupMap()
virtual InitStatus Init()
void DrawDetectorLayout()
Digitization Parameter Class for DIRC barrel part.
void SetMagneticField(double mag=0.)