ATLAS Offline Software
Loading...
Searching...
No Matches
ALFA_MDMultiple.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3*/
4
5#ifndef ALFA_MDMULTIPLE_H
6#define ALFA_MDMULTIPLE_H
7
8#include <iostream>
9#include <vector>
10#include <map>
11#include <algorithm>
12
14
15#include "GaudiKernel/StatusCode.h"
16
17#include "Rtypes.h"
18#include "TMath.h"
19#include "TH1.h"
20#include "TH2.h"
21
24
25#define MAXTRACKNUM 10
26
28{
29 public:
34
35 private:
36 Int_t m_iRPot;
37 Int_t m_iUVCut;
41
42 //slope, offset and Z-pos for MD fibers [8][2*10][64]
45
46 //number of hits in the layer [2*10]
48
49// Int_t m_iTrackMatch[MAXTRACKNUM][2];
50// Int_t m_iNU[MAXTRACKNUM];
51// Int_t m_iNV[MAXTRACKNUM];
52// Int_t m_iFibSel[MAXTRACKNUM][ALFALAYERSCNT*ALFAPLATESCNT];
53
54// Float_t m_fRecXPos[MAXTRACKNUM];
55// Float_t m_fRecYPos[MAXTRACKNUM];
56// Float_t m_fOvU[MAXTRACKNUM];
57// Float_t m_fOvV[MAXTRACKNUM];
58
59 std::vector<Float_t> *m_fRecXPos, *m_fRecYPos;
60 std::vector<Float_t> *m_fOvU, *m_fOvV;
61 std::vector<Int_t> *m_iNU, *m_iNV;
63 std::vector<Int_t> *m_iTrackMatch[2];
64
65 private:
66 std::map<int, FIBERS> m_MapLayers;
67
68 public:
69 StatusCode Initialize(Int_t iRPot, Float_t faMD[RPOTSCNT][ALFALAYERSCNT*ALFAPLATESCNT][ALFAFIBERSCNT], Float_t fbMD[RPOTSCNT][ALFALAYERSCNT*ALFAPLATESCNT][ALFAFIBERSCNT], Int_t iMultiplicityCut, Int_t iNumLayerCut, Int_t iUVCut, Float_t fOverlapCut);
70 StatusCode Execute(const std::list<MDHIT> &ListMDHits);
71 StatusCode Finalize(Float_t (&fRecXPos)[MAXTRACKNUM], Float_t (&fRecYPos)[MAXTRACKNUM]);
72
73 void GetData(Int_t (&iNumU)[MAXTRACKNUM], Int_t (&iNumV)[MAXTRACKNUM], Float_t (&fOvU)[MAXTRACKNUM], Float_t (&fOvV)[MAXTRACKNUM], Int_t (&iFibSel)[MAXTRACKNUM][ALFALAYERSCNT*ALFAPLATESCNT]);
74
75 private:
76 void Proj_Store(Int_t iFiberSide, Int_t (&iOver)[72000], Float_t fbRef, Int_t iSideFlag);
77 void Proj_Store(const std::vector<Int_t> (&FiberHit)[ALFAPLATESCNT], Int_t (&iOver)[72000], Float_t fbRef, Int_t iSideFlag);
78 void Find_Proj(const Int_t iOver[72000], Float_t fbRef, Float_t &fb, Float_t &fOv, Int_t &fNum);
79 void Finding_Fib(Int_t iFiberSide, Float_t fbRef, Float_t fbRec, Int_t (&iFSel)[ALFAPLATESCNT], Int_t iSideFlag);
80 void Reco_Track(std::vector<double> &b_p, std::vector<double> &b_n,
81 std::vector<double> &Ov_p, std::vector<double> &Ov_n,
82 std::vector<int> &Num_p, std::vector<int> &Num_n,
83 std::vector<int> (&FSel_n)[ALFAPLATESCNT], std::vector<int> (&FSel_p)[ALFAPLATESCNT],
84 std::vector<int> (&Track_match)[2]);
85
86};
87#endif // ALFA_MDMULTIPLE_H
#define RPOTSCNT
#define MAXTRACKNUM
#define ALFALAYERSCNT
#define ALFAPLATESCNT
#define ALFAFIBERSCNT
StatusCode Initialize(Int_t iRPot, Float_t faMD[RPOTSCNT][ALFALAYERSCNT *ALFAPLATESCNT][ALFAFIBERSCNT], Float_t fbMD[RPOTSCNT][ALFALAYERSCNT *ALFAPLATESCNT][ALFAFIBERSCNT], Int_t iMultiplicityCut, Int_t iNumLayerCut, Int_t iUVCut, Float_t fOverlapCut)
Float_t m_fbMD[RPOTSCNT][ALFALAYERSCNT *ALFAPLATESCNT][ALFAFIBERSCNT]
void Proj_Store(Int_t iFiberSide, Int_t(&iOver)[72000], Float_t fbRef, Int_t iSideFlag)
StatusCode Execute(const std::list< MDHIT > &ListMDHits)
void Reco_Track(std::vector< double > &b_p, std::vector< double > &b_n, std::vector< double > &Ov_p, std::vector< double > &Ov_n, std::vector< int > &Num_p, std::vector< int > &Num_n, std::vector< int >(&FSel_n)[ALFAPLATESCNT], std::vector< int >(&FSel_p)[ALFAPLATESCNT], std::vector< int >(&Track_match)[2])
void Find_Proj(const Int_t iOver[72000], Float_t fbRef, Float_t &fb, Float_t &fOv, Int_t &fNum)
std::vector< Float_t > * m_fRecXPos
void Finding_Fib(Int_t iFiberSide, Float_t fbRef, Float_t fbRec, Int_t(&iFSel)[ALFAPLATESCNT], Int_t iSideFlag)
std::vector< Int_t > * m_iNU
std::vector< Float_t > * m_fOvU
std::map< int, FIBERS > m_MapLayers
ALFA_MDMultiple & operator=(const ALFA_MDMultiple &obj)
Float_t m_faMD[RPOTSCNT][ALFALAYERSCNT *ALFAPLATESCNT][ALFAFIBERSCNT]
StatusCode Finalize(Float_t(&fRecXPos)[MAXTRACKNUM], Float_t(&fRecYPos)[MAXTRACKNUM])
std::vector< Int_t > * m_iTrackMatch[2]
std::vector< Int_t > * m_iNV
std::vector< Int_t > * m_iFibSel[ALFALAYERSCNT *ALFAPLATESCNT]
std::vector< Float_t > * m_fRecYPos
void GetData(Int_t(&iNumU)[MAXTRACKNUM], Int_t(&iNumV)[MAXTRACKNUM], Float_t(&fOvU)[MAXTRACKNUM], Float_t(&fOvV)[MAXTRACKNUM], Int_t(&iFibSel)[MAXTRACKNUM][ALFALAYERSCNT *ALFAPLATESCNT])
std::vector< Float_t > * m_fOvV
Int_t m_iNumHitsLayer[ALFALAYERSCNT *ALFAPLATESCNT]
AthMessaging(IMessageSvc *msgSvc, const std::string &name)
Constructor.