 |
Belle II Software
release-05-02-19
|
11 #ifndef ARICHRECONSTRUCTION_H
12 #define ARICHRECONSTRUCTION_H
14 #include <arich/dbobjects/ARICHGeometryConfig.h>
15 #include <arich/dbobjects/ARICHReconstructionPar.h>
16 #include <arich/dbobjects/ARICHChannelMask.h>
17 #include <arich/dbobjects/ARICHChannelMapping.h>
18 #include <arich/dbobjects/ARICHGlobalAlignment.h>
19 #include <arich/dbobjects/ARICHMirrorAlignment.h>
20 #include <arich/dbobjects/ARICHAeroTilesAlignment.h>
21 #include "framework/datastore/StoreArray.h"
22 #include "arich/dataobjects/ARICHHit.h"
23 #include "arich/dataobjects/ARICHTrack.h"
24 #include "arich/dataobjects/ARICHLikelihood.h"
25 #include <framework/database/DBObjPtr.h>
52 class ARICHReconstruction {
117 double m_tilePars[124][2] = {0};
136 TVector3
FastTracking(TVector3 dirf, TVector3 r,
double* refind,
double* z,
int n,
int opt);
147 TVector3
FastTrackingSimple(TVector3 dirf, TVector3 r,
double* refind,
double* z,
int n);
162 TVector3& rf, TVector3& dirf,
163 double* refind,
double* z,
int n,
int mirrorID = 0);
171 bool HitsMirror(
const TVector3& pos,
const TVector3& dir,
int mirrorID);
190 #endif // ARICHRECONSTRUCTION_H
double m_trackPosRes
track position resolution (from tracking)
OptionalDBObjPtr< ARICHAeroTilesAlignment > m_tileAlign
alignment of aerogel tiles from DB
int InsideDetector(TVector3 a, int copyno)
Returns 1 if vector "a" lies on "copyno"-th detector active surface of detector and 0 else.
TVector3 FastTracking(TVector3 dirf, TVector3 r, double *refind, double *z, int n, int opt)
Calculates the intersection of the Cherenkov photon emitted from point "r" in "dirf" direction with t...
static const unsigned int c_SetSize
Number of elements (for use in array bounds etc.)
double m_transmissionLen[c_noOfAerogels]
transmission lengths of aerogel layers
This is a class to store ARICH likelihoods in the datastore.
bool m_alignMirrors
if set to true mirror alignment constants from DB are used
DBObjPtr< ARICHReconstructionPar > m_recPars
reconstruction parameters from the DB
std::vector< TVector3 > m_mirrorNorms
vector of nomal vectors of all mirror plates
double p_mass[c_noOfHypotheses]
particle masses
TVector3 m_anorm[c_noOfAerogels]
normal vector of the aerogle plane
TVector3 HitVirtualPosition(const TVector3 &hitpos, int mirrorID)
Returns the hit virtual position, assuming that it was reflected from mirror.
DBObjPtr< ARICHMirrorAlignment > m_mirrAlign
global alignment parameters from the DB
ARICHReconstruction(int storePhotons=0)
Constructor.
double m_n0[c_noOfAerogels]
number of emmited photons per unit length
int m_storePhot
set to 1 to store individual reconstructed photon information
double m_thickness[c_noOfAerogels]
thicknesses of areogel layers
DBObjPtr< ARICHGlobalAlignment > m_alignp
global alignment parameters from the DB
int smearTrack(ARICHTrack &arichTrack)
Smeares track parameters ("simulate" the uncertainties of tracking).
Class for accessing objects in the database.
Optional DBObjPtr: This class behaves the same as the DBObjPtr except that it will not raise errors w...
void initialize()
read geomerty parameters from xml and initialize class memebers
TVector3 getTrackPositionAtZ(const ARICHTrack &track, double zout)
Returns track direction at point with z coordinate "zout" (assumes straight track).
bool HitsMirror(const TVector3 &pos, const TVector3 &dir, int mirrorID)
returns true if photon at position pos with direction dir hits mirror plate with ID mirrorID
DBObjPtr< ARICHChannelMask > m_chnMask
map of masked channels from the DB
void setTrackPositionResolution(double pRes)
Sets track position resolution (from tracking)
TVector3 getMirrorPoint(int mirrorID)
Returns point on the mirror plate with id mirrorID.
void transformTrackToLocal(ARICHTrack &arichTrack, bool align)
Transforms track parameters from global Belle2 to ARICH local frame.
Abstract base class for different kinds of events.
Datastore class that holds position and momentum information of tracks that hit ARICH.
~ARICHReconstruction()
Destructor.
std::vector< TVector3 > m_mirrorPoints
vector of points on all mirror plates
TVector3 getTrackMeanEmissionPosition(const ARICHTrack &track, int iAero)
Returns mean emission position of Cherenkov photons from i-th aerogel layer.
double m_zaero[c_noOfAerogels]
z-positions of aerogel layers
int CherenkovPhoton(TVector3 r, TVector3 rh, TVector3 &rf, TVector3 &dirf, double *refind, double *z, int n, int mirrorID=0)
Calculates the direction of photon emission.
int likelihood2(ARICHTrack &arichTrack, const StoreArray< ARICHHit > &arichHits, ARICHLikelihood &arichLikelihood)
Computes the value of identity likelihood function for different particle hypotheses.
void correctEmissionPoint(int tileID, double r)
correct mean emission point z position
void setTrackAngleResolution(double aRes)
Sets track direction resolution (from tracking)
void useMirrorAlignment(bool align)
use mirror alignment or not
double m_refractiveInd[c_noOfAerogels]
refractive indices of aerogel layers
TVector3 FastTrackingSimple(TVector3 dirf, TVector3 r, double *refind, double *z, int n)
Calculates the intersection of the Cherenkov photon emitted from point "r" in "dirf" direction with t...
static const int c_noOfHypotheses
Number of hypotheses to loop over.
Accessor to arrays stored in the data store.
unsigned int m_nAerogelLayers
number of aerogel layers
TVector3 getMirrorNorm(int mirrorID)
Returns normal vector of the mirror plate with id mirrorID.
double m_trackAngRes
track direction resolution (from tracking)
DBObjPtr< ARICHGeometryConfig > m_arichgp
geometry configuration parameters from the DB
static const int c_noOfAerogels
Maximal number of aerogel layers to loop over.
DBObjPtr< ARICHChannelMapping > m_chnMap
map x,y channels to asic channels from the DB