CbmRoot
Loading...
Searching...
No Matches
CbmRichProjectionProducer2.h
Go to the documentation of this file.
1/* Copyright (C) 2019 GSI Helmholtzzentrum fuer Schwerionenforschung, Darmstadt
2 SPDX-License-Identifier: GPL-3.0-only
3 Authors: Florian Uhlig [committer] */
4
5#ifndef CbmRichProjectionProducer2_H
6#define CbmRichProjectionProducer2_H
7
8#include "CbmRichPoint.h"
10#include "CbmRichRecGeoPar.h"
11#include "CbmRichRing.h"
12#include "CbmRichRingLight.h"
13#include "FairTrackParam.h"
14#include "TGeoNavigator.h"
15#include "TString.h"
16
17#include <vector>
18
19using namespace std;
20
21class TClonesArray;
22
24 public:
25 /*
26 * Constructor.
27 */
29
30 /*
31 * Destructor.
32 */
34
35 virtual void Init();
36
37 /*
38 * From incoming track on the mirrors, do reflection of its trajectory and extrapolation of its intersection on the PMT plane.
39 */
40 virtual void DoProjection(TClonesArray* projectedPoint);
41
42 /*
43 *
44 */
45 Double_t* ProjectionProducer(FairTrackParam* point);
46
47 /*
48 *
49 */
50 void GetPmtNormal(Int_t NofPMTPoints, vector<Double_t>& normalPMT, Double_t& normalCste);
51
52 /*
53 * Calculate the normal of the considered mirror tile, using the sphere center position of the tile (ptC) and the local reflection point on the mirror (ptM) => normalMirr.
54 * Then calculate point on sensitive plane from the reflected track extrapolated (ptR2 = reflection of ptR1, with reflection axis = normalMirr).
55 * ptR2Center uses ptC for the calculations, whereas ptR2Mirr uses ptM.
56 */
57 void ComputeR2(vector<Double_t>& ptR2Center, vector<Double_t>& ptR2Mirr, vector<Double_t> ptM, vector<Double_t> ptC,
58 vector<Double_t> ptR1, TGeoNavigator* navi, TString s);
59
60 /*
61 * Calculate the intersection point (P) between the track and the PMT plane, as if the track had been reflected by the mirror tile.
62 * ptPMirr is calculated using the mirror point (ptM) to define the line reflected by the mirror and towards the PMT plane.
63 * ptPR2 is calculated using ptR2Mirr (the reflection of point R1 on the sensitive plane, using ptM for the calculations -> see ComputeR2 method).
64 */
65 void ComputeP(vector<Double_t>& ptPMirr, vector<Double_t>& ptPR2, vector<Double_t> normalPMT, vector<Double_t> ptM,
66 vector<Double_t> ptR2Mirr, Double_t normalCste);
67
68 /*
69 * Set output directory for images.
70 */
71 void SetOutputDir(TString dir) { fOutputDir = dir; }
72
73 /*
74 *
75 */
76 void SetNumbAxis(TString n) { fNumbAxis = n; }
77
78 /*
79 *
80 */
81 void SetTileName(TString t) { fTile = t; }
82
83
84 private:
85 TClonesArray* fTrackParams;
86 TClonesArray* fMCTracks;
87 TClonesArray* fRichPoints;
88
89 TString fNumbAxis;
90 TString fTile;
91 TString fOutputDir;
92 Int_t fEventNum; // Event counter
93
94 /*
95 * Copy constructor.
96 */
98 /*
99 * Assignment operator.
100 */
102
104};
105
106#endif
RICH geometry parameters for the reconstruction. This class is used for convinient storing of the bas...
Base class for STS track projections onto the photodetector plane.
Double_t * ProjectionProducer(FairTrackParam *point)
void GetPmtNormal(Int_t NofPMTPoints, vector< Double_t > &normalPMT, Double_t &normalCste)
CbmRichProjectionProducer2(const CbmRichProjectionProducer2 &)
virtual void DoProjection(TClonesArray *projectedPoint)
virtual void Init()
Initialization in case one needs to initialize some TCloneArrays.
ClassDef(CbmRichProjectionProducer2, 1)
void ComputeR2(vector< Double_t > &ptR2Center, vector< Double_t > &ptR2Mirr, vector< Double_t > ptM, vector< Double_t > ptC, vector< Double_t > ptR1, TGeoNavigator *navi, TString s)
CbmRichProjectionProducer2 & operator=(const CbmRichProjectionProducer2 &)
void ComputeP(vector< Double_t > &ptPMirr, vector< Double_t > &ptPR2, vector< Double_t > normalPMT, vector< Double_t > ptM, vector< Double_t > ptR2Mirr, Double_t normalCste)
Base class for STS track projections onto the photodetector plane.
Hash for CbmL1LinkKey.