-// second part
-// XMC21 XMC22 strips 0 to 7 and 24 to 31
- Int_t idModuleD, idModuleU;
- Int_t nStrD, nStrU;
-
- idModule=Module(fIdCircuit); // corresponding module Id.
-// number of X strips
- nStrX=AliMUONTriggerConstants::NstripX(ModuleNumber(idModule));
- sign=TMath::Abs(idModule)/idModule;
-
-// fill lower part (0 to 7)
- if (iPosCircuit==1) { // need to scan lower module
- if(idModule<91&&TMath::Abs(idModule)!=41&&idModule>-91) { // non-existing
- idModuleD=sign*(TMath::Abs(idModule)+10); // lower module Id
-// and its number of strips
- nStrD=AliMUONTriggerConstants::NstripX(ModuleNumber(idModuleD));
-
- iStripCircMT2=0;
- for (istrip=nStrD-8; istrip<nStrD; istrip++) {
- fXcode[2][iStripCircMT2]=sign*(TMath::Abs(idModuleD)*100+istrip);
- fXcode[3][iStripCircMT2]=sign*(TMath::Abs(idModuleD)*100+istrip);
- iStripCircMT2++;
- }
+ // second plane middle part
+ Int_t iFirstStripMiddle = FirstStrip(localBoard);
+ Int_t iLastStripMiddle = iFirstStrip + 16;
+ iStripCircuit = 8;
+
+ FillXstrips(icol, iFirstStripMiddle, iLastStripMiddle,
+ iStripCircuit, kFALSE);
+
+ // second plane upper part
+ if (zeroUp == 0) { // something up
+ Int_t iFirstStripUp;
+ Int_t iLastStripUp;
+ Int_t icolUp = icol;
+
+ // check if we need to move to another detElemId
+ AliMpPad pad = fkCurrentSeg->PadByIndices(icol-1,iLastStripMiddle+1,kFALSE);
+
+ if (pad.IsValid()) { // upper strips within same detElemId
+ iFirstStripUp = iLastStripMiddle;
+ iLastStripUp = iFirstStripUp + 8;
+
+ } else { // upper strips in another detElemId
+ fCurrentDetElem = AliMpDDLStore::Instance()->
+ GetNextDEfromLocalBoard(fCurrentLocalBoard, ichamber);
+
+ fkCurrentSeg = AliMpSegmentation::Instance()
+ ->GetMpSegmentation(fCurrentDetElem, AliMp::GetCathodType(icathode));
+
+ iFirstStripUp = 0;
+ iLastStripUp = iFirstStripUp + 8;
+ if (iline == 4) icolUp = icol - 1; // special case
+ if (iline == 5) icolUp = icol + 1; // special case