• Main Page
  • Related Pages
  • Namespaces
  • Data Structures
  • Files
  • File List
  • Globals

beamtime/sts-lasertest/go4/STS/TSTSTopology.cxx (r4864/r3054)

Go to the documentation of this file.
00001 #include "TSTSTopology.h"
00002 #include "stdlib.h"
00003 
00004 TSTSTopology::TSTSTopology()
00005 {
00006         fValidRocs.resize( kRocArrSize );
00007 
00008 // cosy-jan beamtime setup:
00009 //      fValidRocs.at( 0 ) = kFALSE;
00010 //      fValidRocs.at( 1 ) = kTRUE;
00011 //      fValidRocs.at( 2 ) = kTRUE;
00012 //      fValidRocs.at( 3 ) = kTRUE;
00013 //      fValidRocs.at( 4 ) = kTRUE;
00014 //      fValidRocs.at( 5 ) = kTRUE;
00015 //      fValidRocs.at( 6 ) = kTRUE;
00016 
00017 // test with roc simulator:
00018         fValidRocs.at( 0 ) = kFALSE;
00019         fValidRocs.at( 1 ) = kTRUE;
00020    fValidRocs.at( 2 ) = kTRUE;
00021            fValidRocs.at( 3 ) = kFALSE;
00022            fValidRocs.at( 4 ) = kFALSE;
00023            fValidRocs.at( 5 ) = kFALSE;
00024            fValidRocs.at( 6 ) = kFALSE;
00025 
00026 
00027         fValidNxs.resize( kRocArrSize );
00028         for( Int_t iRoc = 0; iRoc < kRocArrSize; iRoc++ ) {
00029                 fValidNxs.at( iRoc ).resize( kNxArrSize );
00030                 if( IsValidRoc( iRoc ) ) {
00031                         fValidNxs.at( iRoc ).at( 0 ) = kTRUE;
00032                         fValidNxs.at( iRoc ).at( 1 ) = kFALSE;
00033                         fValidNxs.at( iRoc ).at( 2 ) = kTRUE;
00034                 }
00035         }
00036 
00037         fNStrips.resize( kNDetectors );
00038         fNStrips.at( 0 ) = 256;
00039         fNStrips.at( 1 ) = 256;
00040         fNStrips.at( 2 ) = 256;
00041 
00042         fRoc2Detector.resize( kRocArrSize );
00043 // beamtime setup:
00044         fRoc2Detector.at( 1 ) = 0;
00045         fRoc2Detector.at( 2 ) = 0;
00046         fRoc2Detector.at( 3 ) = 2;
00047         fRoc2Detector.at( 4 ) = 2;
00048         fRoc2Detector.at( 5 ) = 1;
00049         fRoc2Detector.at( 6 ) = 1;
00050 
00051 
00052 
00053         fRoc2Side.resize( kRocArrSize );
00054         fRoc2Side.at( 1 ) = kNSide;
00055         fRoc2Side.at( 2 ) = kPSide;
00056         fRoc2Side.at( 3 ) = kPSide;
00057         fRoc2Side.at( 4 ) = kNSide;
00058         fRoc2Side.at( 5 ) = kPSide;
00059         fRoc2Side.at( 6 ) = kNSide;
00060 
00061 
00062     fNx2Conn.resize( kRocArrSize );
00063     for( Int_t iRoc = 0; iRoc < kRocArrSize; iRoc++ ) {
00064         fNx2Conn.at( iRoc).resize( kNxArrSize );
00065     }
00066 
00067     fNx2Conn.at( 1 ).at( 0 ) = kOddConnectors;
00068     fNx2Conn.at( 1 ).at( 2 ) = kEvenConnectors;
00069     fNx2Conn.at( 2 ).at( 0 ) = kEvenConnectors;
00070     fNx2Conn.at( 2 ).at( 2 ) = kOddConnectors;
00071     fNx2Conn.at( 3 ).at( 0 ) = kOddConnectors;
00072     fNx2Conn.at( 3 ).at( 2 ) = kEvenConnectors;
00073     fNx2Conn.at( 4 ).at( 0 ) = kOddConnectors;
00074     fNx2Conn.at( 4 ).at( 2 ) = kEvenConnectors;
00075     fNx2Conn.at( 5 ).at( 0 ) = kOddConnectors;
00076     fNx2Conn.at( 5 ).at( 2 ) = kEvenConnectors;
00077     fNx2Conn.at( 6 ).at( 0 ) = kOddConnectors;
00078     fNx2Conn.at( 6 ).at( 2 ) = kEvenConnectors;
00079 
00080         fNRocs = 0;
00081         fNNxs = 0;
00082         for( Int_t iRoc = 0; iRoc < kRocArrSize; iRoc++ ) {
00083                 if( IsValidRoc(iRoc) ) fNRocs++;
00084                 for( Int_t iNx = 0; iNx < kNxArrSize; iNx++ ) {
00085                         fNNxs++;
00086                 }
00087         }
00088 }
00089 
00090 TSTSTopology::~TSTSTopology()
00091 {
00092 
00093 }
00094 
00095 Int_t TSTSTopology::GetStrip( Int_t rocId, Int_t nxId, Int_t nxCh ) const
00096 {
00097         ESTSOddEvenConnectors conn =  GetOddEvenConn( rocId, nxId );
00098         ESTSSide side = GetSide( rocId, nxId );
00099 
00100         switch ( GetDetector( rocId ) ) {
00101                 case 0: {
00102                         return GetStrip_Dem0b( side, conn, nxCh);
00103                 }
00104                 case 1: {
00105                         return GetStrip_Dem2b4( side, conn, nxCh);
00106                 }
00107                 case 2: {
00108                         return GetStrip_DemFsd( side, conn, nxCh);
00109                 }
00110                 default: {
00111                         return -1;
00112                 }
00113         }
00114 
00115 }
00116 
00117 
00118 Int_t TSTSTopology::GetStrip_Dem0b( ESTSSide side, ESTSOddEvenConnectors conn, Int_t nxCh ) const
00119 {
00120         if( side == kPSide ) {
00121                 if( conn == kEvenConnectors ) {
00122                         if( nxCh < 64 ) return 2 * ( nxCh + 2 - 2 * ( nxCh % 2 ) ) - 1;
00123                         return 2 * ( nxCh + 1 ) - 1;
00124                 }
00125                 else {
00126                         if( nxCh < 64 ) return 256 - 2 * ( nxCh + 2 - 2 * ( nxCh % 2 ) ) + 1 - 1;
00127                         return 256 - 2 * nxCh - 1 - 1;
00128                 }
00129         }
00130         else {
00131                 if( conn == kEvenConnectors ) {
00132                         if( nxCh < 64 ) return 256 - 2 * ( nxCh + 1 - 2 * ( nxCh % 2 ) ) - 1;
00133                         return 256 - 2 * nxCh - 1;
00134                 }
00135                 else {
00136                         if( nxCh < 64 ) return 2 * ( nxCh + 1 - 2 * ( nxCh % 2 ) ) + 1 - 1;
00137                         return 2 * nxCh + 1 - 1;
00138                 }
00139         }
00140 }
00141 
00142 
00143 Int_t TSTSTopology::GetStrip_Dem2b4( ESTSSide side, ESTSOddEvenConnectors conn, Int_t nxCh ) const
00144 {
00145         if( side == kPSide ) {
00146                 if( conn == kEvenConnectors ) {
00147                         if( nxCh < 64 ) return 2 * nxCh - 4 * ( nxCh % 2 ) + 2;
00148                         return 2 * nxCh;
00149                 }
00150                 else {
00151                         if( nxCh < 64 ) return 255 - 2 * nxCh + 4 * ( nxCh % 2 ) - 2;
00152                         return 255 - 2 * nxCh;
00153                 }
00154         }
00155         else {
00156                 if( conn == kEvenConnectors ) {
00157                         if( nxCh < 64 ) return 255 - 2 * nxCh + 4 * ( nxCh % 2 ) - 3;
00158                         return 255 - 2 * nxCh - 1;
00159                 }
00160                 else {
00161                         if( nxCh < 64 ) return 2 * nxCh - 4 * ( nxCh % 2 ) + 3;
00162                         return 2 * nxCh + 1;
00163                 }
00164         }
00165 }
00166 
00167 Int_t TSTSTopology::GetStrip_DemFsd( ESTSSide side, ESTSOddEvenConnectors conn, Int_t nxCh ) const
00168 {
00169         if( side == kPSide ) {
00170                 if( conn == kEvenConnectors ) {
00171                         return nxCh * 2;
00172                 }
00173                 return ( 127 - nxCh ) * 2 + 1; // (127 - nxCh) * 2 + 4 * ( nxCh % 2) - 1;
00174         }
00175         else {
00176                 if( conn == kEvenConnectors ) {
00177                         return (127 - nxCh) * 2 - 1 + 4 * ( nxCh % 2) - 1;
00178                 }
00179                 return 2 * nxCh + 3 - 4 * ( nxCh % 2); // nxCh * 2 + 2 - 1;
00180         }
00181 }
00182 
00183 
00184 
00185 

Generated on Tue Dec 10 2013 04:52:18 for ROCsoft by  doxygen 1.7.1