Line data Source code
1 : #include "AliMFTCALayer.h"
2 :
3 : #include "AliMFTCALadder.h"
4 : #include "AliMFTCACell.h"
5 : #include "AliMFTCAHit.h"
6 :
7 12 : ClassImp(AliMFTCALayer)
8 :
9 : //___________________________________________________________________________
10 : AliMFTCALayer::AliMFTCALayer() :
11 0 : TObject(),
12 0 : fID(-1),
13 0 : fNhits(0),
14 0 : fNcells(0),
15 0 : fNladders(0)
16 0 : {
17 :
18 0 : fCells = new TClonesArray("AliMFTCACell", 1000);
19 0 : fHits = new TClonesArray("AliMFTCAHit", 1000);
20 0 : fLadders = new TClonesArray("AliMFTCALadder", 100);
21 :
22 0 : }
23 :
24 : //___________________________________________________________________________
25 : AliMFTCALayer::AliMFTCALayer(const AliMFTCALayer &layer) :
26 0 : TObject(layer),
27 0 : fID(layer.fID),
28 0 : fNhits(layer.fNhits),
29 0 : fNcells(layer.fNcells),
30 0 : fNladders(layer.fNladders)
31 0 : {
32 :
33 : // copy constructor
34 :
35 0 : fCells = new TClonesArray("AliMFTCACell", layer.fNcells);
36 0 : fHits = new TClonesArray("AliMFTCAHit", layer.fNhits);
37 0 : fLadders = new TClonesArray("AliMFTCALadder", layer.fNladders);
38 :
39 : AliMFTCALadder *caLadder;
40 0 : for (Int_t i = 0; i < layer.fNladders; i++) {
41 0 : caLadder = (AliMFTCALadder*)(layer.fLadders->At(i));
42 0 : new ((*fLadders)[i]) AliMFTCALadder(*caLadder);
43 : }
44 : AliMFTCACell *caCell;
45 0 : for (Int_t i = 0; i < layer.fNcells; i++) {
46 0 : caCell = (AliMFTCACell*)(layer.fCells->At(i));
47 0 : new ((*fCells)[i]) AliMFTCACell(*caCell);
48 : }
49 : AliMFTCAHit *caHit;
50 0 : for (Int_t i = 0; i < layer.fNhits; i++) {
51 0 : caHit = (AliMFTCAHit*)(layer.fHits->At(i));
52 0 : new ((*fHits)[i]) AliMFTCAHit(*caHit);
53 : }
54 :
55 0 : }
56 :
57 : //___________________________________________________________________________
58 : AliMFTCALayer& AliMFTCALayer::operator=(const AliMFTCALayer& layer)
59 : {
60 :
61 : // assignment operator
62 :
63 : // check assignement to self
64 0 : if (this == &layer) return *this;
65 :
66 0 : TObject::operator=(layer);
67 :
68 0 : fID = layer.fID;
69 0 : fNhits = layer.fNhits;
70 0 : fNcells = layer.fNcells;
71 0 : fNladders = layer.fNladders;
72 :
73 0 : fCells = new TClonesArray("AliMFTCACell", layer.fNcells);
74 0 : fHits = new TClonesArray("AliMFTCAHit", layer.fNhits);
75 0 : fLadders = new TClonesArray("AliMFTCALadder", layer.fNladders);
76 :
77 : AliMFTCALadder *caLadder;
78 0 : for (Int_t i = 0; i < layer.fNladders; i++) {
79 0 : caLadder = (AliMFTCALadder*)(layer.fLadders->At(i));
80 0 : new ((*fLadders)[i]) AliMFTCALadder(*caLadder);
81 : }
82 : AliMFTCACell *caCell;
83 0 : for (Int_t i = 0; i < layer.fNcells; i++) {
84 0 : caCell = (AliMFTCACell*)(layer.fCells->At(i));
85 0 : new ((*fCells)[i]) AliMFTCACell(*caCell);
86 : }
87 : AliMFTCAHit *caHit;
88 0 : for (Int_t i = 0; i < layer.fNhits; i++) {
89 0 : caHit = (AliMFTCAHit*)(layer.fHits->At(i));
90 0 : new ((*fHits)[i]) AliMFTCAHit(*caHit);
91 : }
92 :
93 0 : }
94 :
95 : //___________________________________________________________________________
96 : void AliMFTCALayer::Clear(const Option_t *) {
97 :
98 0 : if (fCells) fCells->Clear("C");
99 0 : if (fHits) fHits->Clear("C");
100 :
101 0 : fNhits = 0;
102 0 : fNcells = 0;
103 :
104 0 : }
105 :
106 : //___________________________________________________________________________
107 : void AliMFTCALayer::ClearCells()
108 : {
109 :
110 0 : if (fCells) fCells->Clear("C");
111 :
112 0 : fNcells = 0;
113 :
114 0 : }
115 :
116 : //___________________________________________________________________________
117 : AliMFTCACell *AliMFTCALayer::AddCell()
118 : {
119 :
120 0 : new ((*fCells)[fNcells++]) AliMFTCACell();
121 0 : AliMFTCACell *cell = (AliMFTCACell*)fCells->At(fCells->GetLast());
122 :
123 0 : return cell;
124 :
125 0 : }
126 :
127 : //___________________________________________________________________________
128 : AliMFTCAHit *AliMFTCALayer::AddHit()
129 : {
130 :
131 0 : new ((*fHits)[fNhits++]) AliMFTCAHit();
132 0 : AliMFTCAHit *hit = (AliMFTCAHit*)fHits->At(fHits->GetLast());
133 :
134 0 : return hit;
135 :
136 0 : }
137 :
138 : //___________________________________________________________________________
139 : AliMFTCALadder *AliMFTCALayer::GetLadderID(Int_t id) {
140 :
141 : AliMFTCALadder *ladder;
142 : Int_t i = 0;
143 0 : for (; i < fNladders; i++) {
144 0 : ladder = (AliMFTCALadder*)fLadders->At(i);
145 0 : if (ladder->GetID() == id) break;
146 : }
147 0 : if (i == fNladders) {
148 0 : new ((*fLadders)[fNladders++]) AliMFTCALadder();
149 0 : ladder = (AliMFTCALadder*)fLadders->At(fLadders->GetLast());
150 0 : ladder->SetID(id);
151 0 : }
152 :
153 0 : return ladder;
154 :
155 0 : }
|