er  dev
ERTelescopeGeoComponentSensetive.h
1 /********************************************************************************
2  * Copyright (C) Joint Institute for Nuclear Research *
3  * *
4  * This software is distributed under the terms of the *
5  * GNU Lesser General Public Licence version 3 (LGPL) version 3, *
6  * copied verbatim in the file "LICENSE" *
7  ********************************************************************************/
8 
9 #ifndef ERTelescopeGeoComponentSensetive_H
10 #define ERTelescopeGeoComponentSensetive_H
11 
12 #include "TList.h"
13 
14 #include "ERGeoComponent.h"
15 
17 public:
19  ERTelescopeGeoComponentSensetive(const TString& typeFromXML, const TString& id)
20  : ERGeoComponent(typeFromXML, id) {}
21  ERTelescopeGeoComponentSensetive(const TString& typeFromXML, const TString& id,
22  const TVector3& position, const TVector3& rotation)
23  : ERGeoComponent(typeFromXML, id, position, rotation) {}
24  virtual ~ERTelescopeGeoComponentSensetive() = default;
25  Bool_t HasTwoSidedChannel() const { return fHasTwoSidedChannel; }
26  virtual std::list<TString> GetBranchNames(ERDataObjectType object) const;
27  virtual TString GetBranchName(ERDataObjectType object,
28  OrientationAroundZ orientationAroundZ = OrientationAroundZ::Default,
29  ChannelSide side = ChannelSide::None) const = 0;
30  virtual std::list<OrientationAroundZ> GetOrientationsAroundZ() const = 0;
31  virtual std::list<ChannelSide> GetChannelSides() const = 0;
32  virtual Int_t GetChannelFromSensetiveNodePath(
33  const TString& path, OrientationAroundZ orientation = OrientationAroundZ::Default) const = 0;
34 protected:
35  TString GetBranchNamePrefix(SensetiveType sensetiveType, ERDataObjectType object) const;
36  void FillTwoSidedChannelAttribute(const TList* attributes);
37  TString fMedia;
38  Double_t fSizeX = 0.;
39  Double_t fSizeY = 0.;
40  Double_t fSizeZ = 0.;
41  Bool_t fHasTwoSidedChannel = false;
43 };
44 
45 #endif