40 : FairTask(
"CbmRichGeoOpt")
46 , fRichRingMatches(NULL)
50 , nPhotonsNotOnPlane(0)
51 , nPhotonsNotOnSphere(0)
55 , ReadPMTPlaneCenter()
56 , ReadPMTPlaneCenterOrig()
74 , H_Diff_LineRefPMT_MomAtPMT(NULL)
75 , H_Theta_TwoVectors(NULL)
76 , H_DistancePMTtoMirrCenter(NULL)
77 , H_DistancePMTtoMirr(NULL)
81 , H_Mom_Theta_MC(NULL)
83 , H_Mom_Theta_Rec(NULL)
84 , H_Pt_Theta_Rec(NULL)
85 , H_Mom_Theta_Acc(NULL)
86 , H_Pt_Theta_Acc(NULL)
90 , H_Mom_XY_Theta25(NULL)
91 , H_MomPrim_RegularTheta(NULL)
92 , H_acc_mom_el_RegularTheta(NULL)
94 , H_Hits_XY_LeftHalf(NULL)
95 , H_Hits_XY_RightHalf(NULL)
96 , H_Hits_XY_Left2Thirds(NULL)
97 , H_Hits_XY_RightThird(NULL)
99 , H_PointsIn_XY_LeftHalf(NULL)
100 , H_PointsIn_XY_RightHalf(NULL)
101 , H_PointsIn_XY_Left2Thirds(NULL)
102 , H_PointsIn_XY_RightThird(NULL)
103 , H_PointsOut_XY(NULL)
104 , H_NofPhotonsPerEv(NULL)
105 , H_NofPhotonsPerHit(NULL)
106 , H_NofPhotonsSmallerThan30(NULL)
109 , H_dFocalPoint_Delta(NULL)
110 , H_dFocalPoint_Rho(NULL)
112 , H_Alpha_UpLeft(NULL)
113 , H_Alpha_UpLeft_II(NULL)
114 , H_Alpha_UpLeft_RegularTheta(NULL)
115 , H_Alpha_UpLeft_LeftHalf(NULL)
116 , H_Alpha_UpLeft_RightHalf(NULL)
117 , H_Alpha_UpLeft_RightThird(NULL)
118 , H_Alpha_UpLeft_Left2Thirds(NULL)
119 , H_Alpha_XYposAtDet(NULL)
120 , H_Alpha_XYposAtDet_RegularTheta(NULL)
121 , H_Alpha_XYposAtDet_LeftHalf(NULL)
122 , H_Alpha_XYposAtDet_RightHalf(NULL)
123 , H_Alpha_XYposAtDet_RightThird(NULL)
124 , H_Alpha_XYposAtDet_Left2Thirds(NULL)
127 , H_NofRings_NofHits(NULL)
128 , H_RingCenterX(NULL)
129 , H_RingCenterY(NULL)
135 , H_boa_RegularTheta(NULL)
136 , H_boa_LeftHalf(NULL)
137 , H_boa_RightHalf(NULL)
138 , H_boa_RightThird(NULL)
139 , H_boa_Left2Thirds(NULL)
142 , H_dR_RegularTheta(NULL)
143 , H_dR_LeftHalf(NULL)
144 , H_dR_RightHalf(NULL)
145 , H_dR_RightThird(NULL)
146 , H_dR_Left2Thirds(NULL)
147 , H_RingCenter_Aaxis(NULL)
148 , H_RingCenter_Baxis(NULL)
149 , H_RingCenter_boa(NULL)
150 , H_RingCenter_boa_RegularTheta(NULL)
151 , H_RingCenter_boa_LeftHalf(NULL)
152 , H_RingCenter_boa_RightHalf(NULL)
153 , H_RingCenter_boa_RightThird(NULL)
154 , H_RingCenter_boa_Left2Thirds(NULL)
155 , H_RingCenter_dR(NULL)
156 , H_RingCenter_dR_RegularTheta(NULL)
157 , H_RingCenter_dR_LeftHalf(NULL)
158 , H_RingCenter_dR_RightHalf(NULL)
159 , H_RingCenter_dR_RightThird(NULL)
160 , H_RingCenter_dR_Left2Thirds(NULL)
313 if (nofPoints < 0 || nofPoints > 2000) {
317 for (Int_t ip = 0; ip < nofPoints; ip++) {
319 TVector3 PosAtDetOut;
321 if (NULL == point)
continue;
323 PosAtDetIn.SetX(point->GetX());
324 PosAtDetIn.SetY(point->GetY());
325 PosAtDetIn.SetZ(point->GetZ());
327 if (!Checked)
continue;
347 MomAtPMT.SetX(point->GetPx());
348 MomAtPMT.SetY(point->GetPy());
349 MomAtPMT.SetZ(point->GetPz());
352 Int_t PointMCTrackId = point->GetTrackID();
353 if (PointMCTrackId < 0)
continue;
355 if (NULL == PointTrack)
continue;
360 if (PointMotherId == -1) {
364 int pdg = TMath::Abs(motherTrack->
GetPdgCode());
367 Double_t ElTheta = 0.;
368 if (pdg == 11 && motherId == -1) {
370 ElTheta = ElMom.Theta() * 180 / TMath::Pi();
372 double Alpha2 = MomAtPMT.Angle(
PMT_norm);
373 double Alpha2InDeg = Alpha2 * TMath::RadToDeg();
374 if (Alpha2InDeg > 90.) {
375 Alpha2InDeg = 180. - Alpha2InDeg;
378 if (PosAtDetIn.X() < 0. && PosAtDetIn.Y() > 0) {
411 Int_t nofHits =
fRichHits->GetEntriesFast();
413 for (Int_t iH = 0; iH < nofHits; iH++) {
415 if (hit == NULL)
continue;
417 if (pointInd < 0)
continue;
419 if (point == NULL)
continue;
423 TVector3 inPos(point->GetX(), point->GetY(), point->GetZ());
449 Int_t nofRefPoints =
fRefPoints->GetEntriesFast();
451 if (nofPoints == 0 || nofRefPoints == 0) {
454 if (nofPoints > 2000) {
458 for (
int i = 0; i < nofRefPoints; i++) {
463 MomAtRef.SetX(RefPoint->GetPx());
464 MomAtRef.SetY(RefPoint->GetPy());
465 MomAtRef.SetZ(RefPoint->GetPz());
467 if (RefPoint == NULL)
continue;
468 int RefPointTrackId = RefPoint->GetTrackID();
469 if (RefPointTrackId < 0) {
474 if (TMath::Abs(pdg0) == 11) {
477 RefPoint->Position(PosAtRefl);
478 int Zpos = int(10. * PosAtRefl.Z());
480 cout << PosAtRefl.Z() <<
" " << Zpos << endl;
486 PosAtDetIn.SetX(point->GetX());
487 PosAtDetIn.SetY(point->GetY());
488 PosAtDetIn.SetZ(point->GetZ());
490 MomAtPMT.SetX(point->GetPx());
491 MomAtPMT.SetY(point->GetPy());
492 MomAtPMT.SetZ(point->GetPz());
493 float MagMomAtPMT = MomAtPMT.Mag();
496 Int_t PointMCTrackId = point->GetTrackID();
498 if (NULL == PointTrack)
continue;
503 if (PointMotherId == -1) {
508 int pdg = TMath::Abs(motherTrack->
GetPdgCode());
511 Double_t ElTheta = 0.;
512 if (pdg == 11 && motherId == -1) {
514 ElTheta = ElMom.Theta() * 180 / TMath::Pi();
523 TVector3 LineSensToPMT = PosAtDetIn - PosAtRefl;
524 float MagLineSensToPMT = LineSensToPMT.Mag();
529 double Alpha = LineSensToPMT.Angle(
PMT_norm);
530 double AlphaInDeg = Alpha * TMath::RadToDeg();
531 if (AlphaInDeg > 90.) {
532 AlphaInDeg = 180. - AlphaInDeg;
536 double Alpha2 = MomAtPMT.Angle(
PMT_norm);
537 double Alpha2InDeg = Alpha2 * TMath::RadToDeg();
538 if (Alpha2InDeg > 90.) {
539 Alpha2InDeg = 180. - Alpha2InDeg;
547 if (PosAtDetIn.X() < 0. && PosAtDetIn.Y() > 0) {
576 Int_t nofHits =
fRichHits->GetEntriesFast();
578 for (Int_t iH = 0; iH < nofHits; iH++) {
580 if (hit == NULL)
continue;
582 if (pointInd < 0)
continue;
584 if (point == NULL)
continue;
588 TVector3 inPos(point->GetX(), point->GetY(), point->GetZ());
614 Int_t nofRings =
fRichRings->GetEntriesFast();
615 for (Int_t iR = 0; iR < nofRings; iR++) {
617 if (NULL == ring)
continue;
619 if (NULL == ringMatch || ringMatch->
GetNofLinks() < 1) {
636 Int_t pdg = TMath::Abs(mcTrack->
GetPdgCode());
637 if (pdg != 11 || motherId != -1) {
642 Double_t momentum = mcTrack->
GetP();
643 Double_t pt = mcTrack->
GetPt();
648 Double_t theta = mom.Theta() * 180 / TMath::Pi();
674 if (!(radius <= 1. || radius > 1.)) {
683 H_boa->Fill(bA / aA);
692 if (theta <= 25 && theta >= 24.9) {
724 for (
int iH = 0; iH < nAllHitsInR; iH++) {
726 double xH = hit->
GetX();
727 double yH = hit->
GetY();
728 double dRaa = aA - TMath::Sqrt((CentX - xH) * (CentX - xH) + (CentY - yH) * (CentY - yH));
730 double dR = radius - TMath::Sqrt((CentX - xH) * (CentX - xH) + (CentY - yH) * (CentY - yH));
791 new TH1D(
"H_Diff_LineRefPMT_MomAtPMT",
"H_Diff_LineRefPMT_MomAtPMT;#Delta [cm]; Yield", 100, -10., 10.);
793 H_Theta_TwoVectors =
new TH1D(
"H_Theta_TwoVectors",
"H_Theta_TwoVectors;#theta [deg]; Yield", 100, 0., 10.);
794 H_MomRing =
new TH1D(
"H_MomRing",
"H_MomRing;p [GeV]; Yield", 49, 0., 12.);
795 H_MomPrim =
new TH1D(
"H_MomPrim",
"H_MomPrim;p [GeV]; Yield", 49, 0., 12.);
796 H_PtPrim =
new TH1D(
"H_PtPrim",
"H_PtPrim;p [GeV]; Yield", 81, 0., 4.);
797 H_MomPt =
new TH2D(
"H_MomPt",
"H_MomPt;p [GeV];pt [GeV]; Yield", 101, 0., 10., 81, 0., 4.);
798 H_Mom_Theta_MC =
new TH2D(
"H_Mom_Theta_MC",
"H_Mom_Theta_MC;p [GeV];theta [deg]; Yield", 40, 0., 10., 50, 0, 25.);
799 H_Pt_Theta_MC =
new TH2D(
"H_Pt_Theta_MC",
"H_Pt_Theta_MC;pt [GeV];theta [deg]; Yield", 16, 0., 4., 50, 0, 25.);
801 H_Mom_Theta_Rec =
new TH2D(
"H_Mom_Theta_Rec",
"H_Mom_Theta_Rec;p [GeV];theta [deg]; Yield", 40, 0., 10., 50, 0, 25.);
802 H_Pt_Theta_Rec =
new TH2D(
"H_Pt_Theta_Rec",
"H_Pt_Theta_Rec;pt [GeV];theta [deg]; Yield", 16, 0., 4., 50, 0, 25.);
803 H_Mom_Theta_Acc =
new TH2D(
"H_Mom_Theta_Acc",
"H_Mom_Theta_Acc;p [GeV];theta [deg]; Yield", 40, 0., 10., 50, 0, 25.);
804 H_Pt_Theta_Acc =
new TH2D(
"H_Pt_Theta_Acc",
"H_Pt_Theta_Acc;pt [GeV];theta [deg]; Yield", 16, 0., 4., 50, 0, 25.);
806 H_MomPrim_RegularTheta =
new TH1D(
"H_MomPrim_RegularTheta",
"H_MomPrim_RegularTheta;p [GeV]; Yield", 49, 0., 12.);
808 new TH1D(
"H_acc_mom_el_RegularTheta",
"H_acc_mom_el_RegularTheta;p [GeV/c];Yield", 49, 0., 12.);
811 H_Hits_XY =
new TH2D(
"H_Hits_XY",
"H_Hits_XY;X [cm];Y [cm];Counter", 151, -150., 0., 351, 0., 350.);
813 new TH2D(
"H_Hits_XY_LeftHalf",
"H_Hits_XY_LeftHalf;X [cm];Y [cm];Counter", 151, -150., 0., 351, 0., 350.);
815 new TH2D(
"H_Hits_XY_RightHalf",
"H_Hits_XY_RightHalf;X [cm];Y [cm];Counter", 151, -150., 0., 351, 0., 350.);
817 new TH2D(
"H_Hits_XY_RightThird",
"H_Hits_XY_RightThird;X [cm];Y [cm];Counter", 151, -150., 0., 351, 0., 350.);
819 new TH2D(
"H_Hits_XY_Left2Thirds",
"H_Hits_XY_Left2Thirds;X [cm];Y [cm];Counter", 151, -150., 0., 351, 0., 350.);
821 H_PointsIn_XY =
new TH2D(
"H_PointsIn_XY",
"H_PointsIn_XY;X [cm];Y [cm];Counter", 151, -150., 0., 251, 50., 250.);
823 new TH2D(
"H_PointsIn_XY_LeftHalf",
"H_PointsIn_XY_LeftHalf;X [cm];Y [cm];Counter", 151, -150., 0., 251, 50., 250.);
824 H_PointsIn_XY_RightHalf =
new TH2D(
"H_PointsIn_XY_RightHalf",
"H_PointsIn_XY_RightHalf;X [cm];Y [cm];Counter", 151,
825 -150., 0., 251, 50., 250.);
826 H_PointsIn_XY_RightThird =
new TH2D(
"H_PointsIn_XY_RightThird",
"H_PointsIn_XY_RightThird;X [cm];Y [cm];Counter", 151,
827 -150., 0., 251, 50., 250.);
829 151, -150., 0., 251, 50., 250.);
831 H_PointsOut_XY =
new TH2D(
"H_PointsOut_XY",
"H_PointsOut_XY;X [cm];Y [cm];Counter", 151, -150., 0., 351, 0., 350.);
834 new TH1D(
"H_NofPhotonsPerEv",
"H_NofPhotonsPerEv;Number of photons per event;Yield", 500, 0., 1000.);
836 new TH1D(
"H_NofPhotonsPerHit",
"H_NofPhotonsPerHit;Number of photons per hit;Yield", 10, -0.5, 9.5);
838 new TH1D(
"H_NofPhotonsSmallerThan30",
"H_NofPhotonsSmallerThan30 ;Number of photons;Yield", 10, -0.5, 9.5);
839 H_DiffXhit =
new TH1D(
"H_DiffXhit",
"H_DiffXhit;Y_{point}-Y_{hit} [cm];Yield", 200, -1., 1.);
840 H_DiffYhit =
new TH1D(
"H_DiffYhit",
"H_DiffYhit;Y_{point}-Y_{hit} [cm];Yield", 200, -1., 1.);
842 H_Alpha =
new TH1D(
"H_Alpha",
"H_Alpha;#alpha_{photon-PMT} [deg];Yield", 180, 0., 180.);
843 H_Alpha_UpLeft =
new TH1D(
"H_Alpha_UpLeft",
"H_Alpha_UpLeft;#alpha_{photon-PMT} [deg];Yield", 180, 0., 180.);
844 H_Alpha_UpLeft_II =
new TH1D(
"H_Alpha_UpLeft_II",
"H_Alpha_UpLeft_II;#alpha_{photon-PMT} [deg];Yield", 180, 0., 180.);
846 "H_Alpha_UpLeft_RegularTheta;#alpha_{photon-PMT} [deg];Yield", 180, 0., 180.);
849 new TH1D(
"H_Alpha_UpLeft_LeftHalf",
"H_Alpha_UpLeft_LeftHalf;#alpha_{photon-PMT} [deg];Yield", 180, 0., 180.);
851 new TH1D(
"H_Alpha_UpLeft_RightHalf",
"H_Alpha_UpLeft_RightHalf;#alpha_{photon-PMT} [deg];Yield", 180, 0., 180.);
853 new TH1D(
"H_Alpha_UpLeft_Left2Thirds",
"H_Alpha_UpLeft_Left2Thirds;#alpha_{photon-PMT} [deg];Yield", 180, 0., 180.);
855 new TH1D(
"H_Alpha_UpLeft_RightThird",
"H_Alpha_UpLeft_RightThird;#alpha_{photon-PMT} [deg];Yield", 180, 0., 180.);
859 new TH3D(
"H_Alpha_XYposAtDet",
"H_Alpha_XYposAtDet; X [cm]; Y [cm];#alpha_{photon-PMT} [deg];Yield", 151, -150., 0.,
860 251, 50, 250, 180, 0., 180.);
862 "H_Alpha_XYposAtDet_RegularTheta; X [cm]; Y "
863 "[cm];#alpha_{photon-PMT} [deg];Yield",
864 151, -150., 0., 251, 50, 250, 180, 0., 180.);
866 "H_Alpha_XYposAtDet_LeftHalf; X [cm]; Y [cm];#alpha_{photon-PMT} "
868 151, -150., 0., 251, 50, 250, 180, 0., 180.);
870 "H_Alpha_XYposAtDet_RightHalf; X [cm]; Y [cm];#alpha_{photon-PMT} "
872 151, -150., 0., 251, 50, 250, 180, 0., 180.);
874 "H_Alpha_XYposAtDet_Left2Thirds; X [cm]; Y "
875 "[cm];#alpha_{photon-PMT} [deg];Yield",
876 151, -150., 0., 251, 50, 250, 180, 0., 180.);
878 "H_Alpha_XYposAtDet_RightThird; X [cm]; Y "
879 "[cm];#alpha_{photon-PMT} [deg];Yield",
880 151, -150., 0., 251, 50, 250, 180, 0., 180.);
883 H_dFocalPoint_Delta =
new TH1D(
"H_dFocalPoint_Delta",
"H_dFocalPoint_Delta;#Delta_{f} [mm];Yield", 80, -20., 20.);
884 H_dFocalPoint_Rho =
new TH1D(
"H_dFocalPoint_Rho",
"H_dFocalPoint_Rho;#rho_{f} [mm];Yield", 150, 50., 200.);
890 H_acc_mom_el =
new TH1D(
"H_acc_mom_el",
"H_acc_mom_el;p [GeV/c];Yield", 49, 0., 12.);
891 H_acc_pty_el =
new TH2D(
"H_acc_pty_el",
"H_acc_pty_el;Rapidity;P_{t} [GeV/c];Yield", 25, 0., 4., 61, 0., 10.);
892 H_Mom_XY_Theta25 =
new TH3D(
"H_Mom_XY_Theta25",
"H_Mom_XY_Theta25", 151, -150, 0, 351, 0, 350, 121, 0.,
896 H_NofHitsAll =
new TH1D(
"H_NofHitsAll",
"H_NofHitsAll;Nof hits in ring;Yield", 50, 0., 50.);
897 H_NofRings =
new TH1D(
"H_NofRings",
"H_NofRings;Nof rings per event;Yield", 10, 0., 10.);
898 H_NofRings_NofHits =
new TH2D(
"H_NofRings_NofHits",
"H_NofRings_NofHits;Nof rings per event, Nof hits per ring;Yield",
899 10, 0., 10., 50, 0., 50.);
902 H_Radius =
new TH1D(
"H_Radius",
"H_Radius", 401, 2., 6.);
903 H_aAxis =
new TH1D(
"H_aAxis",
"H_aAxis", 401, 2., 10.);
904 H_bAxis =
new TH1D(
"H_bAxis",
"H_bAxis", 401, 2., 10.);
905 H_boa =
new TH1D(
"H_boa",
"H_boa", 51, 0.5, 1.);
906 H_boa_RegularTheta =
new TH1D(
"H_boa_RegularTheta",
"H_boa_RegularTheta", 51, 0.5, 1.);
907 H_boa_LeftHalf =
new TH1D(
"H_boa_LeftHalf",
"H_boa_LeftHalf", 51, 0.5, 1.);
908 H_boa_RightHalf =
new TH1D(
"H_boa_RightHalf",
"H_boa_RightHalf", 51, 0.5, 1.);
909 H_boa_Left2Thirds =
new TH1D(
"H_boa_Left2Thirds",
"H_boa_Left2Thirds", 51, 0.5, 1.);
910 H_boa_RightThird =
new TH1D(
"H_boa_RightThird",
"H_boa_RightThird", 51, 0.5, 1.);
913 H_dR_aa =
new TH1D(
"H_dR_aa",
"H_dR_aa", 61, -3., 3.);
914 H_dR =
new TH1D(
"H_dR",
"H_dR", 61, -3., 3.);
915 H_dR_RegularTheta =
new TH1D(
"H_dR_RegularTheta",
"H_dR_RegularTheta", 61, -3., 3.);
916 H_dR_LeftHalf =
new TH1D(
"H_dR_LeftHalf",
"H_dR_LeftHalf", 61, -3., 3.);
917 H_dR_RightHalf =
new TH1D(
"H_dR_RightHalf",
"H_dR_RightHalf", 61, -3., 3.);
918 H_dR_Left2Thirds =
new TH1D(
"H_dR_Left2Thirds",
"H_dR_Left2Thirds", 61, -3., 3.);
919 H_dR_RightThird =
new TH1D(
"H_dR_RightThird",
"H_dR_RightThird", 61, -3., 3.);
923 H_RingCenter =
new TH2D(
"H_RingCenter",
"H_RingCenter", 201, -100., 0., 351, 0., 350.);
925 H_RingCenter_Aaxis =
new TH3D(
"H_RingCenter_Aaxis",
"H_RingCenter_Aaxis", 151, -150, 0, 351, 0, 350, 80, 2., 10.);
926 H_RingCenter_Baxis =
new TH3D(
"H_RingCenter_Baxis",
"H_RingCenter_Baxis", 151, -150, 0, 351, 0, 350, 80, 2., 10.);
927 H_RingCenter_boa =
new TH3D(
"H_RingCenter_boa",
"H_RingCenter_boa", 151, -150, 0, 351, 0, 350, 51, 0.5, 1.);
929 new TH3D(
"H_RingCenter_boa_RegularTheta",
"H_RingCenter_boa_RegularTheta", 151, -150, 0, 351, 0, 350, 51, 0.5, 1.);
931 new TH3D(
"H_RingCenter_boa_LeftHalf",
"H_RingCenter_boa_LeftHalf", 151, -150, 0, 351, 0, 350, 51, 0.5, 1.);
933 new TH3D(
"H_RingCenter_boa_RightHalf",
"H_RingCenter_boa_RightHalf", 151, -150, 0, 351, 0, 350, 51, 0.5, 1.);
935 new TH3D(
"H_RingCenter_boa_Left2Thirds",
"H_RingCenter_boa_Left2Thirds", 151, -150, 0, 351, 0, 350, 51, 0.5, 1.);
937 new TH3D(
"H_RingCenter_boa_RightThird",
"H_RingCenter_boa_RightThird", 151, -150, 0, 351, 0, 350, 51, 0.5, 1.);
939 H_RingCenter_dR =
new TH3D(
"H_RingCenter_dR",
"H_RingCenter_dR", 151, -150, 0, 351, 0, 350, 61, -3., 3.);
941 new TH3D(
"H_RingCenter_dR_RegularTheta",
"H_RingCenter_dR_RegularTheta", 151, -150, 0, 351, 0, 350, 61, -3., 3.);
943 new TH3D(
"H_RingCenter_dR_LeftHalf",
"H_RingCenter_dR_LeftHalf", 151, -150, 0, 351, 0, 350, 61, -3., 3.);
945 new TH3D(
"H_RingCenter_dR_RightHalf",
"H_RingCenter_dR_RightHalf", 151, -150, 0, 351, 0, 350, 61, -3., 3.);
947 new TH3D(
"H_RingCenter_dR_Left2Thirds",
"H_RingCenter_dR_Left2Thirds", 151, -150, 0, 351, 0, 350, 61, -3., 3.);
949 new TH3D(
"H_RingCenter_dR_RightThird",
"H_RingCenter_dR_RightThird", 151, -150, 0, 351, 0, 350, 61, -3., 3.);