fXpos11[i].Set(16);
fYpos11[i].Set(31);
fYpos21[i].Set(63);
+ fZpos11[i].Set(31);
+ fZpos21[i].Set(63);
+ fXwidth11[i].Set(16);
+ fYwidth11[i].Set(31);
+ fYwidth21[i].Set(63);
}
for (Int_t i = 1; i < AliMpConstants::NofLocalBoards()+1; ++i) { // board begins at 1
fXpos11[i].Reset();
fYpos11[i].Reset();
fYpos21[i].Reset();
+ fZpos11[i].Reset();
+ fZpos21[i].Reset();
+ fXwidth11[i].Reset();
+ fYwidth11[i].Reset();
+ fYwidth21[i].Reset();
}
}
fXpos11[i] = circuit.fXpos11[i];
fYpos11[i] = circuit.fYpos11[i];
fYpos21[i] = circuit.fYpos21[i];
+ fZpos11[i] = circuit.fZpos11[i];
+ fZpos21[i] = circuit.fZpos21[i];
+ fXwidth11[i] = circuit.fXwidth11[i];
+ fYwidth11[i] = circuit.fYwidth11[i];
+ fYwidth21[i] = circuit.fYwidth21[i];
}
}
fXpos11[i] = circuit.fXpos11[i];
fYpos11[i] = circuit.fYpos11[i];
fYpos21[i] = circuit.fYpos21[i];
+ fZpos11[i] = circuit.fZpos11[i];
+ fZpos21[i] = circuit.fZpos21[i];
+ fXwidth11[i] = circuit.fXwidth11[i];
+ fYwidth11[i] = circuit.fYwidth11[i];
+ fYwidth21[i] = circuit.fYwidth21[i];
}
return *this;
Int_t iStripCircuit = 0;
FillXstrips(icol, iFirstStrip, iLastStrip,
- iStripCircuit, fYpos11[fCurrentLocalBoard]);
+ iStripCircuit, kTRUE);
//--- second plane
ichamber = 12;
iStripCircuit = 8;
FillXstrips(icol, iFirstStripMiddle, iLastStripMiddle,
- iStripCircuit, fYpos21[fCurrentLocalBoard]);
+ iStripCircuit, kFALSE);
// second plane upper part
if (zeroUp == 0) { // something up
iStripCircuit = 24;
FillXstrips(icolUp, iFirstStripUp, iLastStripUp,
- iStripCircuit, fYpos21[fCurrentLocalBoard]);
+ iStripCircuit, kFALSE);
// fill strip between middle and upper part
fYpos21[fCurrentLocalBoard][47] = (fYpos21[fCurrentLocalBoard][46] +
fYpos21[fCurrentLocalBoard][48])/2.;
+ fZpos21[fCurrentLocalBoard][47] = (fZpos21[fCurrentLocalBoard][46] +
+ fZpos21[fCurrentLocalBoard][48])/2.;
+ fYwidth21[fCurrentLocalBoard][47] = (fYwidth21[fCurrentLocalBoard][46] +
+ fYwidth21[fCurrentLocalBoard][48])/2.;
} // end of something up
// restore current detElemId & segmentation
iStripCircuit = 0;
FillXstrips(icolDo, iFirstStripDo, iLastStripDo,
- iStripCircuit, fYpos21[fCurrentLocalBoard]);
+ iStripCircuit, kFALSE);
// fill strip between middle and upper part
fYpos21[fCurrentLocalBoard][15] = (fYpos21[fCurrentLocalBoard][14] +
fYpos21[fCurrentLocalBoard][16])/2.;
+ fZpos21[fCurrentLocalBoard][15] = (fZpos21[fCurrentLocalBoard][14] +
+ fZpos21[fCurrentLocalBoard][16])/2.;
+ fYwidth21[fCurrentLocalBoard][15] = (fYwidth21[fCurrentLocalBoard][14] +
+ fYwidth21[fCurrentLocalBoard][16])/2.;
} // end of something down
}
//----------------------------------------------------------------------
void AliMUONTriggerCircuit::FillXstrips(const Int_t icol,
const Int_t iFirstStrip, const Int_t iLastStrip,
- Int_t liStripCircuit, TArrayF& ypos)
+ Int_t liStripCircuit, const Bool_t is11)
{
/// fill
- Double_t xyGlobal[2] = {0.};
+ TArrayF& ypos = (is11) ? fYpos11[fCurrentLocalBoard] : fYpos21[fCurrentLocalBoard];
+ TArrayF& zpos = (is11) ? fZpos11[fCurrentLocalBoard] : fZpos21[fCurrentLocalBoard];
+ TArrayF& ywidth = (is11) ? fYwidth11[fCurrentLocalBoard] : fYwidth21[fCurrentLocalBoard];
+
+ Double_t xyGlobal[3] = {0.};
for (Int_t istrip = iFirstStrip; istrip < iLastStrip; ++istrip) {
AliMpPad pad = fkCurrentSeg->PadByIndices(icol-1,istrip,kTRUE);
XYGlobal(pad,xyGlobal);
ypos[2*liStripCircuit] = xyGlobal[1];
- if (istrip != (iLastStrip - 1)) ypos[2*liStripCircuit+1] = xyGlobal[1] + yDim;
+ zpos[2*liStripCircuit] = xyGlobal[2];
+ ywidth[2*liStripCircuit] = 2. * yDim;
+ if (istrip != (iLastStrip - 1)) {
+ ypos[2*liStripCircuit+1] = xyGlobal[1] + yDim;
+ zpos[2*liStripCircuit+1] = xyGlobal[2];
+ ywidth[2*liStripCircuit+1] = 2. * yDim;
+ }
liStripCircuit++;
}
}
const Bool_t doubling)
{
/// fill
- Double_t xyGlobal[2] = {0.};
+ Double_t xyGlobal[3] = {0.};
for (Int_t istrip = iFirstStrip; istrip < iLastStrip; ++istrip) {
if (!doubling) {
fXpos11[fCurrentLocalBoard].AddAt(xyGlobal[0], liStripCircuit);
+ fXwidth11[fCurrentLocalBoard].AddAt(2. * xDim, liStripCircuit);
} else if (doubling) {
fXpos11[fCurrentLocalBoard].AddAt(TMath::Sign(1.,xyGlobal[0]) *
(TMath::Abs(xyGlobal[0]) - xDim/2.), 2*liStripCircuit);
+ fXwidth11[fCurrentLocalBoard].AddAt(2. * xDim, 2*liStripCircuit);
fXpos11[fCurrentLocalBoard].AddAt(TMath::Sign(1.,xyGlobal[0]) *
(TMath::Abs(fXpos11[fCurrentLocalBoard][2*liStripCircuit]) + xDim),
2*liStripCircuit + 1);
+ fXwidth11[fCurrentLocalBoard].AddAt(2. * xDim, 2*liStripCircuit + 1);
}
liStripCircuit++;
// get the pad position and dimensions
Double_t xl1 = pad.GetPositionX();
Double_t yl1 = pad.GetPositionY();
- Double_t zg1 = 0;
// positions from local to global
fkTransformer->Local2Global(fCurrentDetElem, xl1, yl1, 0,
- xyGlobal[0], xyGlobal[1], zg1);
+ xyGlobal[0], xyGlobal[1], xyGlobal[2]);
}
//----------------------------------------------------------------------
//--- methods which return member data related info
//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+Float_t AliMUONTriggerCircuit::GetX11Pos(Int_t localBoardId, Int_t istrip) const
+{
+/// returns X position of Y strip istrip in MC11
+ return fXpos11[localBoardId][istrip];
+}
Float_t AliMUONTriggerCircuit::GetY11Pos(Int_t localBoardId, Int_t istrip) const
{
/// returns Y position of X strip istrip in MC11
return fYpos21[localBoardId][istrip];
}
//----------------------------------------------------------------------
-Float_t AliMUONTriggerCircuit::GetX11Pos(Int_t localBoardId, Int_t istrip) const
+Float_t AliMUONTriggerCircuit::GetZ11Pos(Int_t localBoardId, Int_t istrip) const
{
-/// returns X position of Y strip istrip in MC11
- return fXpos11[localBoardId][istrip];
+/// returns Z position of X strip istrip in MC11
+ return fZpos11[localBoardId][istrip];
+}
+//----------------------------------------------------------------------
+Float_t AliMUONTriggerCircuit::GetZ21Pos(Int_t localBoardId, Int_t istrip) const
+{
+/// returns Z position of X strip istrip in MC21
+ return fZpos21[localBoardId][istrip];
+}
+Float_t AliMUONTriggerCircuit::GetX11Width(Int_t localBoardId, Int_t istrip) const
+{
+/// returns width of Y strip istrip in MC11
+ return fXwidth11[localBoardId][istrip];
+}
+Float_t AliMUONTriggerCircuit::GetY11Width(Int_t localBoardId, Int_t istrip) const
+{
+/// returns width of X strip istrip in MC11
+ return fYwidth11[localBoardId][istrip];
+}
+//----------------------------------------------------------------------
+Float_t AliMUONTriggerCircuit::GetY21Width(Int_t localBoardId, Int_t istrip) const
+{
+/// returns width of X strip istrip in MC21
+ return fYwidth21[localBoardId][istrip];
}
//----------------------------------------------------------------------