ATLAS Offline Software
Loading...
Searching...
No Matches
ALFA_MDGap.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
3*/
4
5#ifndef ALFA_MDGap_H
6#define ALFA_MDGap_H
7
8#include <iostream>
9#include <string>
10#include <vector>
11#include <map>
12#include <span>
13
15
16#include "GaudiKernel/StatusCode.h"
17
18#include "Rtypes.h"
19#include "TMath.h"
20#include "TH1.h"
21#include "TH2.h"
22
25
26#define MAXTRACKNUM 10
27
29{
30 public:
31 ALFA_MDGap();
33
34 private:
35 Int_t m_iRPot;
36 Int_t m_iUVCut;
38
39 //slope, offset and Z-pos for MD fibers [2*10][64]
42
43 //number of hits in the layer
45
49
54
55 private:
56 std::map<Int_t, FIBERS> m_MapLayers;
57
58 public:
59 StatusCode Initialize(Int_t iRPot, Float_t faMD[RPOTSCNT][ALFALAYERSCNT*ALFAPLATESCNT][ALFAFIBERSCNT], Float_t fbMD[RPOTSCNT][ALFALAYERSCNT*ALFAPLATESCNT][ALFAFIBERSCNT], Int_t iUVCut, Float_t fOverlapCut);
60 StatusCode Execute(const std::list<MDHIT> &ListMDHits);
61 StatusCode Finalize(Float_t (&fRecXPos)[MAXTRACKNUM], Float_t (&fRecYPos)[MAXTRACKNUM]);
62
63 void GetData(Int_t (&iNumU)[MAXTRACKNUM], Int_t (&iNumV)[MAXTRACKNUM], Float_t (&fOvU)[MAXTRACKNUM], Float_t (&fOvV)[MAXTRACKNUM], Int_t (&iFibSel)[ALFALAYERSCNT*ALFAPLATESCNT]);
64
65 private:
66 void Proj_Store(Int_t iFiberSide, std::span<Int_t> iOver, Float_t fbRef, Int_t iSideFlag);
67 void Find_Proj(const std::span<const Int_t>& iOver, Float_t fbRef, Float_t &fb, Float_t &fOv, Int_t &fNum) const;
68 void Finding_Fib(Int_t iFiberSide, Float_t fbRef, Float_t fbRec, Int_t (&iFSel)[ALFAPLATESCNT], Int_t iSideFlag);
69 void Reco_Track(std::vector<Float_t> &b_p, std::vector<Float_t> &b_n,
70 std::vector<Float_t> &Ov_p, std::vector<Float_t> &Ov_n,
71 std::vector<int> &Num_p, std::vector<int> &Num_n,
72 Int_t (&FSel_n)[ALFAPLATESCNT], Int_t (&FSel_p)[ALFAPLATESCNT],
73 Int_t (&Gaps)[2][2], std::vector<Int_t> &GapsID, Bool_t (&FGaps_p)[ALFAPLATESCNT], Bool_t (&FGaps_n)[ALFAPLATESCNT],
74 Int_t (&Gap_Fib_p)[ALFAPLATESCNT][2], Int_t (&Gap_Fib_n)[ALFAPLATESCNT][2]);
75 Int_t Silent_Gap(std::span<Int_t> Over, Float_t b_ref, Float_t b_rec, const Int_t FSel[ALFAPLATESCNT], Bool_t (&FGap)[ALFAPLATESCNT], Int_t (&Gap_Fib)[ALFAPLATESCNT][2], Float_t OverLap, Int_t iSideFlag);
76 Int_t Active_Gap(Int_t iFiberSide, std::span<Int_t> Over, Float_t b_ref, Float_t b_rec, const Int_t FSel[ALFAPLATESCNT], Float_t OverLap, Int_t iSideFlag);
77
78};
79#endif // ALFA_MDGap_H
#define RPOTSCNT
#define MAXTRACKNUM
Definition ALFA_MDGap.h:26
#define ALFALAYERSCNT
#define ALFAPLATESCNT
#define ALFAFIBERSCNT
Int_t m_iUVCut
Definition ALFA_MDGap.h:36
Float_t m_faMD[RPOTSCNT][ALFALAYERSCNT *ALFAPLATESCNT][ALFAFIBERSCNT]
Definition ALFA_MDGap.h:40
void Find_Proj(const std::span< const Int_t > &iOver, Float_t fbRef, Float_t &fb, Float_t &fOv, Int_t &fNum) const
void Finding_Fib(Int_t iFiberSide, Float_t fbRef, Float_t fbRec, Int_t(&iFSel)[ALFAPLATESCNT], Int_t iSideFlag)
Int_t Active_Gap(Int_t iFiberSide, std::span< Int_t > Over, Float_t b_ref, Float_t b_rec, const Int_t FSel[ALFAPLATESCNT], Float_t OverLap, Int_t iSideFlag)
Float_t m_fRecXPos[MAXTRACKNUM]
Definition ALFA_MDGap.h:50
Int_t Silent_Gap(std::span< Int_t > Over, Float_t b_ref, Float_t b_rec, const Int_t FSel[ALFAPLATESCNT], Bool_t(&FGap)[ALFAPLATESCNT], Int_t(&Gap_Fib)[ALFAPLATESCNT][2], Float_t OverLap, Int_t iSideFlag)
Float_t m_fOvV[MAXTRACKNUM]
Definition ALFA_MDGap.h:53
Int_t m_iNU[MAXTRACKNUM]
Definition ALFA_MDGap.h:46
Int_t m_iNumHitsLayer[ALFALAYERSCNT *ALFAPLATESCNT]
Definition ALFA_MDGap.h:44
StatusCode Finalize(Float_t(&fRecXPos)[MAXTRACKNUM], Float_t(&fRecYPos)[MAXTRACKNUM])
void GetData(Int_t(&iNumU)[MAXTRACKNUM], Int_t(&iNumV)[MAXTRACKNUM], Float_t(&fOvU)[MAXTRACKNUM], Float_t(&fOvV)[MAXTRACKNUM], Int_t(&iFibSel)[ALFALAYERSCNT *ALFAPLATESCNT])
Int_t m_iRPot
Definition ALFA_MDGap.h:35
void Reco_Track(std::vector< Float_t > &b_p, std::vector< Float_t > &b_n, std::vector< Float_t > &Ov_p, std::vector< Float_t > &Ov_n, std::vector< int > &Num_p, std::vector< int > &Num_n, Int_t(&FSel_n)[ALFAPLATESCNT], Int_t(&FSel_p)[ALFAPLATESCNT], Int_t(&Gaps)[2][2], std::vector< Int_t > &GapsID, Bool_t(&FGaps_p)[ALFAPLATESCNT], Bool_t(&FGaps_n)[ALFAPLATESCNT], Int_t(&Gap_Fib_p)[ALFAPLATESCNT][2], Int_t(&Gap_Fib_n)[ALFAPLATESCNT][2])
Int_t m_iNV[MAXTRACKNUM]
Definition ALFA_MDGap.h:47
std::map< Int_t, FIBERS > m_MapLayers
Definition ALFA_MDGap.h:56
Float_t m_fOverlapCut
Definition ALFA_MDGap.h:37
StatusCode Initialize(Int_t iRPot, Float_t faMD[RPOTSCNT][ALFALAYERSCNT *ALFAPLATESCNT][ALFAFIBERSCNT], Float_t fbMD[RPOTSCNT][ALFALAYERSCNT *ALFAPLATESCNT][ALFAFIBERSCNT], Int_t iUVCut, Float_t fOverlapCut)
void Proj_Store(Int_t iFiberSide, std::span< Int_t > iOver, Float_t fbRef, Int_t iSideFlag)
Float_t m_fOvU[MAXTRACKNUM]
Definition ALFA_MDGap.h:52
Float_t m_fRecYPos[MAXTRACKNUM]
Definition ALFA_MDGap.h:51
Float_t m_fbMD[RPOTSCNT][ALFALAYERSCNT *ALFAPLATESCNT][ALFAFIBERSCNT]
Definition ALFA_MDGap.h:41
Int_t m_iFibSel[ALFALAYERSCNT *ALFAPLATESCNT]
Definition ALFA_MDGap.h:48
StatusCode Execute(const std::list< MDHIT > &ListMDHits)
AthMessaging(IMessageSvc *msgSvc, const std::string &name)
Constructor.