ATLAS Offline Software
Loading...
Searching...
No Matches
ITkPixelCsvWaferIdAlg.h
Go to the documentation of this file.
1/*
2Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3*/
4
5#ifndef ITKPIXELBYTESTREAMCNV_ITKPIXELCSVWAFERIDALG_H
6#define ITKPIXELBYTESTREAMCNV_ITKPIXELCSVWAFERIDALG_H
7
9#include "GaudiKernel/EventContext.h"
10#include "GaudiKernel/ISvcLocator.h"
11#include "Identifier/Identifier.h"
13
14#include <atomic>
15#include <string>
16#include <vector>
17#include <utility>
18#include <tuple>
19#include <bitset>
20
21
22class PixelID;
23
25public:
26 struct CsvRow {
27 std::string spChain;
28 std::string md;
29 int fe = -1;
30 std::string flx_card_device;
31 unsigned int fiber = 0;
32 };
33
34 ITkPixelCsvWaferIdAlg(const std::string& name, ISvcLocator* pSvcLocator);
35 virtual ~ITkPixelCsvWaferIdAlg() = default;
36
37 virtual StatusCode initialize() override;
38 virtual StatusCode execute(const EventContext& ctx) const override;
39
40 const std::vector<CsvRow>& rows() const { return m_rows; }
41
42 StatusCode loadCsv();
43 std::tuple<Identifier,int,std::bitset<32>> waferId(const CsvRow& row) const;
44 std::bitset<32> onlineId(const std::vector<std::string>& spchain, const std::string& mod, int fe) const;
45
46private:
47 static std::string trim(const std::string& input);
48 static std::vector<std::string> splitCsvLine(const std::string& line);
49 static std::vector<std::string> parseSPChain(const std::string& spChain);
50 std::vector<int> DmaBuffer() const;
51 std::bitset<32> sourceID(const std::vector<std::string>& spchain, const std::string& flx, const unsigned int dma) const;
52 std::vector<std::string> splitFLX_card_device(const std::string& s) const;
53 std::bitset<32> subDetID(int barrel_endcap, int layer_disk) const;
54
55
56 // Helper functions implemented in the .cxx file
57 int barrel_ec(const std::vector<std::string>& spchain) const;
58 int layer_disk(const std::vector<std::string>& spchain) const;
59 int phi_module(const std::vector<std::string>& spchain, const std::string& mod, int fe) const;
60 int eta_module(const std::vector<std::string>& spchain, const std::string& mod, int fe) const;
61 int feID(const std::vector<std::string>& spchain, int fe) const;
62
63 Gaudi::Property<std::string> m_csvFile{this,
64 "CsvFile",
65 "AT2-IP-ES-0016_v1.41_INCOMPLETE-ModuleA_slim.csv",
66 "CSV file containing SP chain, Module and FE columns"};
67 Gaudi::Property<std::string> m_outputFile{this,
68 "OutputFile",
69 "ITkPixelWaferIds.txt",
70 "Output text file for one 32-bit waferID per line"};
71
72 const PixelID* m_pixIdHelper = nullptr;
73 std::vector<CsvRow> m_rows;
74
75 mutable std::atomic<bool> m_done{false};
76};
77
78#endif // ITKPIXELBYTESTREAMCNV_ITKPIXELCSVWAFERIDALG_H
This is an Identifier helper class for the Pixel subdetector.
An algorithm that can be simultaneously executed in multiple threads.
std::bitset< 32 > subDetID(int barrel_endcap, int layer_disk) const
virtual ~ITkPixelCsvWaferIdAlg()=default
virtual StatusCode initialize() override
virtual StatusCode execute(const EventContext &ctx) const override
static std::string trim(const std::string &input)
std::vector< std::string > splitFLX_card_device(const std::string &s) const
std::bitset< 32 > onlineId(const std::vector< std::string > &spchain, const std::string &mod, int fe) const
std::atomic< bool > m_done
static std::vector< std::string > splitCsvLine(const std::string &line)
std::vector< int > DmaBuffer() const
std::bitset< 32 > sourceID(const std::vector< std::string > &spchain, const std::string &flx, const unsigned int dma) const
std::vector< CsvRow > m_rows
int phi_module(const std::vector< std::string > &spchain, const std::string &mod, int fe) const
Gaudi::Property< std::string > m_outputFile
static std::vector< std::string > parseSPChain(const std::string &spChain)
int feID(const std::vector< std::string > &spchain, int fe) const
Gaudi::Property< std::string > m_csvFile
int barrel_ec(const std::vector< std::string > &spchain) const
std::tuple< Identifier, int, std::bitset< 32 > > waferId(const CsvRow &row) const
int eta_module(const std::vector< std::string > &spchain, const std::string &mod, int fe) const
ITkPixelCsvWaferIdAlg(const std::string &name, ISvcLocator *pSvcLocator)
int layer_disk(const std::vector< std::string > &spchain) const
const std::vector< CsvRow > & rows() const
This is an Identifier helper class for the Pixel subdetector.
Definition PixelID.h:69