32#include "FairRootManager.h"
33#include "TClonesArray.h"
73 Double_t phi2, Float_t r1, Float_t r2, Int_t digiNum, UInt_t charge,
171 fDetId =
module->GetDetectorId();
174 Int_t nofSectors =
module->GetNSectors();
175 Int_t padIterator = 0;
176 for (Int_t iSector = 0; iSector < nofSectors; iSector++) {
179 for (Int_t iPad = 0; iPad < nofPadsInSector; iPad++) {
199 vector<UInt_t> diagonalNeighbors;
200 diagonalNeighbors.clear();
201 for (Int_t iPadMain = 0; iPadMain <
fNofPads; iPadMain++) {
208 Double_t dPhi = fabs(
fPadList[iPadMain].fPhi1 -
fPadList[iPadMain].fPhi2) * 0.1;
210 Double_t lPhi = (Left_1 - Right_1) * 0.01;
211 Float_t lR = (Down_1 - Up_1) * 0.01;
212 for (Int_t iPadNeighbor = 0; iPadNeighbor <
fNofPads; iPadNeighbor++) {
213 if (iPadMain == iPadNeighbor)
continue;
218 if ((Left_1 == Right_2) || (Right_1 == Left_2)) {
219 if (((Down_1 - lR) < Up_2) && ((Up_1 + lR) > Down_2)) {
224 if ((Up_1 == Down_2) || (Down_1 == Up_2)) {
225 if (((Left_1 - lPhi) < Right_2) && ((Right_1 + lPhi) > Left_2)) {
231 if (((Left_1 == Right_2) && (Up_1 == Down_2)) || ((Left_1 == Right_2) && (Up_2 == Down_1))
232 || ((Left_2 == Right_1) && (Up_1 == Down_2)) || ((Left_2 == Right_1) && (Up_2 == Down_1))) {
233 diagonalNeighbors.push_back(iPadNeighbor);
236 for (Int_t iNeighbor = 0; iNeighbor < diagonalNeighbors.size(); iNeighbor++) {
240 diagonalNeighbors.clear();
249 fDetId =
module->GetDetectorId();
252 Int_t nofSectors =
module->GetNSectors();
253 Int_t padIterator = 0;
254 for (Int_t iSector = 0; iSector < nofSectors; iSector++) {
257 for (Int_t iPad = 0; iPad < nofPadsInSector; iPad++) {
279 vector<UInt_t> diagonalNeighbors;
280 diagonalNeighbors.clear();
281 for (Int_t iSector = 0; iSector < nofSectors; iSector++) {
284 for (Int_t iPad = 0; iPad < nofPadsInSector; iPad++) {
289 for (Int_t iNeighbor = 0; iNeighbor < neighborsVector.size(); iNeighbor++) {
290 Int_t padNeighbor =
fPadByChannelId[neighborsVector.at(iNeighbor)->GetAddress()];
299 diagonalNeighbors.push_back(padNeighbor);
307 for (Int_t iNeighbor = 0; iNeighbor < diagonalNeighbors.size(); iNeighbor++) {
311 diagonalNeighbors.clear();
370 if ((x1 < (x2 + l)) && (x1 > (x2 - l))) {
Class for pixel hits in MUCH detector.
Data class for a reconstructed hit in the STS.
friend fvec cos(const fvec &a)
friend fvec sin(const fvec &a)
Float_t GetDx(Int_t iPad)
void CbmClusteringSetPad(Int_t nPad, Float_t x, Float_t y, Float_t dx, Float_t dy, Double_t phi1, Double_t phi2, Float_t r1, Float_t r2, Int_t digiNum, UInt_t charge, Long64_t chID)
Float_t GetR1(Int_t iPad)
Long64_t GetChannelID(Int_t iPad)
Double_t GetPhi2(Int_t iPad)
Int_t GetPadByChannelId(Long64_t chId)
UInt_t GetPadCharge(Int_t iPad)
void SetDigiNum(Int_t iPad, Int_t iDigi)
std::map< Long64_t, Int_t > fPadByChannelId
void SetPadCharge(Int_t iPad, UInt_t iCharge)
Int_t GetGoodNeighborsNum(Int_t iPad)
virtual ~CbmClusteringGeometry()
Int_t GetDigiNum(Int_t iPad)
void SetAPadsNom(Int_t nPads)
Bool_t SubEqual(Double_t x1, Double_t x2, Double_t l)
Float_t GetX0(Int_t iPad)
void SetMuchModuleGeometryRadial(Int_t nStation, Int_t nLayer, Bool_t nSide, Int_t nModule, CbmMuchGeoScheme *scheme)
void SetMuchModuleGeometryRadialFast(Int_t nStation, Int_t nLayer, Bool_t nSide, Int_t nModule, CbmMuchGeoScheme *scheme)
std::vector< Int_t > GetNeighbors(Int_t iPad)
Float_t GetR2(Int_t iPad)
Float_t GetDy(Int_t iPad)
Int_t GetNeighbor(Int_t iPad, Int_t iNeighbor)
Int_t GetNeighborsNum(Int_t iPad)
PadInformation * fPadList
Double_t GetPhi1(Int_t iPad)
Long64_t GetPadID(Int_t iPad)
Float_t GetY0(Int_t iPad)
static int32_t GetElementAddress(int32_t address, int32_t level)
CbmMuchModule * GetModule(Int_t iStation, Int_t iLayer, Bool_t iSide, Int_t iModule) const
CbmMuchSector * GetSectorByIndex(Int_t iSector)
std::vector< CbmMuchPad * > GetNeighbours() const
Int_t GetNChannels() const
CbmMuchPad * GetPadByChannelIndex(Int_t iChannel) const