28 #ifndef PNDDRCRECOLOOKUPMAP_H 29 #define PNDDRCRECOLOOKUPMAP_H 32 #include "TClonesArray.h" 37 #include "FairBaseParSet.h" 52 #include "TPolyLine.h" 54 #ifndef ROOT_TParticlePDG 55 #include "TParticlePDG.h" 57 #ifndef ROOT_TDatabasePDG 58 #include "TDatabasePDG.h" 73 virtual InitStatus
Init();
76 virtual void Exec(Option_t *option);
82 void SetNSigma(
double nsig = 3.) { fNSigma = nsig; }
84 void SetOutputFile(TString outName =
"PndDrcRecoLookupMap_output.root") { fOutputName = outName; }
88 const Int_t NRGBs = 5;
89 const Int_t NCont = 255;
91 Double_t stops[NRGBs] = {0.00, 0.34, 0.61, 0.84, 1.00};
92 Double_t red[NRGBs] = {0.00, 0.00, 0.87, 1.00, 0.51};
93 Double_t green[NRGBs] = {0.00, 0.81, 1.00, 0.20, 0.00};
94 Double_t blue[NRGBs] = {0.51, 1.00, 0.12, 0.00, 0.00};
95 TColor::CreateGradientColorTable(NRGBs, stops, red, green, blue, NCont);
96 gStyle->SetNumberContours(NCont);
102 Double_t theta = (180. - 2 * fGeo->
PipehAngle()) / fGeo->
BBoxNum() / 180. * 3.1415;
104 Double_t rad_out = 102.6;
105 Double_t rad_in = 49.15;
106 Double_t rp_out = rad_out /
cos(theta);
107 Double_t rp_in = rad_in /
cos(theta);
108 Double_t xout[4], yout[4], xin[4], yin[4];
109 for (Int_t
i = 0;
i < 4;
i++) {
110 xout[
i] = rp_out *
cos(2.0 * (
i - 1) * theta);
111 yout[
i] = rp_out *
sin(2.0 * (
i - 1) * theta);
112 xin[
i] = rp_in *
cos(2.0 * (
i - 1) * theta);
113 yin[
i] = rp_in *
sin(2.0 * (
i - 1) * theta);
114 TLine *l1 =
new TLine(xout[
i], yout[i], xin[i], yin[i]);
117 TPolyLine *p1 =
new TPolyLine(4, xout, yout);
118 p1->SetFillColor(kYellow);
120 TPolyLine *p2 =
new TPolyLine(4, xin, yin);
128 void ProcessPhotonHit();
129 void ProcessPhotonMC();
133 void ProcessBarHit();
143 Double_t fPipehAngle;
150 virtual void SetParContainers();
153 Double_t InBarCoordSyst(TVector3, TVector3 *, TVector3 *, TVector3 *, TVector3 *);
154 Double_t SectorNum(Double_t, Double_t);
155 Int_t NumberOfBounces(TVector3, TVector3, Int_t);
156 Double_t FindOutPoint(Double_t, Double_t, Double_t, Double_t *, Bool_t);
157 Double_t CherenkovPhi(TVector3, TVector3, Double_t *, Double_t *);
158 Double_t RecoAmbigTime(TVector3, TVector3, Double_t *, Bool_t);
159 void DrawBarBox(TVector3, TVector3, TVector3, TVector3);
162 TClonesArray *fBarPointArray;
163 TClonesArray *fPDPointArray;
164 TClonesArray *fHitArray;
165 TClonesArray *fPDHitArray;
166 TClonesArray *fMCArray;
167 TClonesArray *fDigiArray;
170 TClonesArray *fDrcLutInfoArray;
178 void SetDefaultParameters();
188 Double_t fHAngleInBDeg;
222 Double_t fkxBar, fkyBar, fkzBar;
223 Double_t fPxMoBar, fPyMoBar, fPzMoBar;
224 Double_t fxnew, fynew;
228 TVector3 fStartVertex;
238 std::vector<TH1F *> PhiThetaPoints;
239 std::vector<TH1F *> PhiThetaPointsCut;
240 std::vector<TH1F *> PhiThetaPointsWeight;
241 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.)