/************************************************************************** * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * * * * Author: The ALICE Off-line Project. * * Contributors are mentioned in the code where appropriate. * * * * Permission to use, copy, modify and distribute this software and its * * documentation strictly for non-commercial purposes is hereby granted * * without fee, provided that the above copyright notice appears in all * * copies and that both the copyright notice and this permission notice * * appear in the supporting documentation. The authors make no claims * * about the suitability of this software for any purpose. It is * * provided "as is" without express or implied warranty. * **************************************************************************/ void MUONGenerateBusPatch() { // Generates buspatch id and DDL id for given detection element id // station 1 & 2 assuming 24 buspatches per quadrant // station345, reading from DetElemIdToSlatType.dat file and calculates // the number of bus patches per slat (and also number of Translator and Bridge Boards). // Generates an output file DetElemIdToBusPatch.dat.out, preserve from overwriting // (Ch. Finck, July 05) // (Nov. 05, added DDL) // (June 06, correction for St123) // (Feb. 07, add 1st manu list for St12 (starting on NB !) and new ddl sharing for station 3) TString dirPath2 = gSystem->Getenv("ALICE_ROOT"); dirPath2 += "/MUON/mapping/data/"; TString dirPath1 = dirPath2 + "station345/"; TString infile = dirPath1 + "DetElemIdToSlatType.dat"; TString outfile = dirPath2 + "DetElemIdToBusPatch.dat.out"; ifstream in(infile, ios::in); ofstream out(outfile, ios::out); char line[80]; char nameSlat[82]; Int_t idDE; Int_t i; Int_t cursor = 0; Int_t begin[800]; Int_t end[800]; Int_t nbBusPatch; Int_t listDE[800]; Int_t nbTB = 0; Int_t nbBB = 0; Int_t idSt12[] = {100, 101, 102, 103, 200, 201, 202, 203, 300, 301, 302, 303, 400, 401, 402, 403}; Char_t manuListSt1[] = " 1,27,53,79,105,131,157,183,201,214,224,232,1025,1051,1077,1103,1129,1155,1181,1207,1225,1238,1249,1257"; Char_t manuListSt2[] = " 1,27,53,79,105,131,157,183,201,214,226,246,1025,1051,1077,1103,1129,1155,1181,1207,1225,1238,1251,1269"; Int_t idCh5swp1 = 5; // 1/4 chamber for DDL on horizontal Int_t idCh5swp2 = 10; // 1/4 chamber for DDL on horizontal Int_t idCh5swp3 = 14; // 1/4 chamber for DDL on horizontal Int_t idCh6swp1 = 5; // 1/4 chamber for DDL on horizontal Int_t idCh6swp2 = 9; // 1/4 chamber for DDL on horizontal Int_t idCh6swp3 = 14; // 1/4 chamber for DDL on horizontal Int_t idSt45swp1 = 7; // half chamber for DDL in vertical cutting twice the official numbering Int_t idSt45swp2 = 20; Int_t iDDL = 0; // station 1 & 2 nbBusPatch = 24; Int_t nbHalfBusPatch = nbBusPatch/2; cout << "#DE BusPatch DDL SlatName" << endl; out << "#DE BusPatch DDL 1st manu in buspatch" << endl; for (Int_t j = 0; j < 16; j++) { idDE = idSt12[j]; if (idDE % 100 == 0) { iDDL++; begin[cursor] = AliMpBusPatch::GetGlobalBusID(0, iDDL-1); cout << "# Chamber " << idDE/100 << endl; out << "# Chamber " << idDE/100 << endl; } if (idDE % 100 == 1) { iDDL++; begin[cursor] = AliMpBusPatch::GetGlobalBusID(0, iDDL-1); } if (idDE % 100 == 3) { iDDL--; begin[cursor] = AliMpBusPatch::GetGlobalBusID(0, iDDL-1) + nbBusPatch; } end[cursor] = begin[cursor] + nbBusPatch - 1; begin[++cursor] = end[cursor] + 1; cout << idDE << " " << begin[cursor-1] + nbHalfBusPatch << "-" <= 700) { if (idDE % 100 == 0) { nbBusSt45Tot = 0; iDDL++; if (idDE >=800) iDDL++; begin[cursor] = AliMpBusPatch::GetGlobalBusID(0, iDDL-1); cout << "# Chamber " << idDE/100 << endl; out << "# Chamber " << idDE/100 << endl; } nbBusSt45Tot += nbBusPatch; if (idDE == 700+idSt45swp1 || idDE == 800+idSt45swp1 || idDE == 900+idSt45swp1 || idDE == 1000+idSt45swp1 ) { iDDL++; begin[cursor] = AliMpBusPatch::GetGlobalBusID(0, iDDL-1); nbBusSt45Swap = nbBusSt45Tot - nbBusPatch; nbBusSt45Tot = 0; } if (idDE == 700+idSt45swp2 || idDE == 800+idSt45swp2 || idDE == 900+idSt45swp2 || idDE == 1000+idSt45swp2 ) { iDDL--; begin[cursor] = AliMpBusPatch::GetGlobalBusID(nbBusSt45Swap, iDDL-1); } end[cursor] = begin[cursor] + nbBusPatch - 1; begin[++cursor] = end[cursor] + 1; cout << idDE << " " << begin[cursor-1]<<"-"<