File indexing completed on 2024-04-06 11:57:47
0001 #ifndef MEChannel_hh
0002 #define MEChannel_hh
0003
0004
0005
0006
0007
0008
0009 #include <vector>
0010 #include <TROOT.h>
0011
0012 class MEChannel {
0013 public:
0014 MEChannel(int ix, int iy, int ii, MEChannel* mother);
0015 virtual ~MEChannel();
0016
0017 int id() const;
0018 int ix() const { return _ix; }
0019 int iy() const { return _iy; }
0020
0021 MEChannel* getDaughter(int ix, int iy, int ig);
0022 MEChannel* m() { return _m; }
0023 MEChannel* d(unsigned ii) {
0024 if (ii >= n())
0025 return nullptr;
0026 return _d[ii];
0027 }
0028 unsigned n() const { return _d.size(); }
0029 int ig() const { return _ig; }
0030
0031 bool getListOfChannels(std::vector<MEChannel*>&);
0032 bool getListOfAncestors(std::vector<MEChannel*>&);
0033 bool getListOfDescendants(std::vector<MEChannel*>&);
0034 bool getListOfDescendants(int ig, std::vector<MEChannel*>&);
0035 MEChannel* getFirstDescendant(int ig);
0036 MEChannel* getDescendant(int ig, int ii);
0037 MEChannel* getChannel(int ix, int iy);
0038 MEChannel* getChannel(int ig, int ix, int iy);
0039 MEChannel* getAncestor(int ig);
0040
0041 void print(std::ostream& o, bool recursif = false) const;
0042 TString oneLine(int ig);
0043 TString oneLine() { return oneLine(_ig); }
0044 TString oneWord(int ig);
0045 TString oneWord() { return oneWord(_ig); }
0046
0047 private:
0048
0049 MEChannel* _m;
0050 std::vector<MEChannel*> _d;
0051
0052
0053 int _ig;
0054
0055
0056 int _ix;
0057 int _iy;
0058
0059
0060 std::vector<int> _id;
0061
0062 MEChannel* addDaughter(int ix, int iy, int ii);
0063
0064
0065 };
0066
0067 #endif