@@ -1023,6 +1023,21 @@ Float_t St_TpcAvgCurrentC::AcCharge(Int_t sector, Int_t channel) {
10231023 return (sector > 0 && sector <= 24 && channel > 0 && channel <= 8 ) ?
10241024 Struct ()->AcCharge [8 *(sector-1 )+channel-1 ] : 0 ;
10251025}
1026+ #include " St_itpcRDOMapC.h"
1027+ MakeChairInstance2 (tpcRDOMap,St_itpcRDOMapC,Calibrations/tpc/itpcRDOMap);
1028+ // ________________________________________________________________________________
1029+ Int_t St_itpcRDOMapC::rdo (Int_t padrow, Int_t pad) const {
1030+ Int_t rdo = 0 ;
1031+ Int_t N = nrows (0 );
1032+ for (Int_t i = 0 ; i < N; i++) {
1033+ if (padrow != row (i)) continue ;
1034+ if (pad < padMin (i) || pad > padMax (i)) continue ;
1035+ rdo = rdoI (i);
1036+
1037+ break ;
1038+ }
1039+ return rdo;
1040+ }
10261041#include " St_tpcRDOMapC.h"
10271042MakeChairInstance (tpcRDOMap,Calibrations/tpc/tpcRDOMap);
10281043// ________________________________________________________________________________
@@ -1038,6 +1053,17 @@ Int_t St_tpcRDOMapC::rdo(Int_t padrow, Int_t pad) const {
10381053 }
10391054 return rdo;
10401055}
1056+ // ________________________________________________________________________________
1057+ Int_t St_tpcRDOMapC::rdo (Int_t sector, Int_t padrow, Int_t pad) const {
1058+ if (St_tpcPadConfigC::instance ()->iTpc (sector)) {
1059+ Int_t N40 = St_tpcPadConfigC::instance ()->innerPadRows (sector);
1060+ if (padrow <= N40) {
1061+ return St_itpcRDOMapC::instance ()->rdo (padrow,pad);
1062+ }
1063+ return St_tpcRDOMapC::instance ()->rdo (padrow-N40+13 ,pad) + 2 ;
1064+ }
1065+ return rdo (padrow, pad);
1066+ }
10411067#include " St_tpcRDOT0offsetC.h"
10421068MakeChairInstance (tpcRDOT0offset,Calibrations/tpc/tpcRDOT0offset);
10431069Float_t St_tpcRDOT0offsetC::T0 (Int_t sector, Int_t padrow, Int_t pad) const {
@@ -1145,21 +1171,40 @@ Bool_t St_beamInfoC::IsFixedTarget() {
11451171#include " St_tpcRDOMasksC.h"
11461172MakeChairInstance (tpcRDOMasks,RunLog/onl/tpcRDOMasks);
11471173// ________________________________________________________________________________
1148- UInt_t St_tpcRDOMasksC::getSectorMask (UInt_t sector ) {
1174+ UInt_t St_tpcRDOMasksC::getSectorMask (UInt_t sec ) {
11491175 UInt_t MASK = 0x0000 ; // default is to mask it out
11501176 // UInt_t MASK = 0xFFFF; // change to ON by default ** THIS WAS A HACK
1151- if (sector < 1 || sector > 24 || getNumRows () == 0 ){
1177+ if (sec < 1 || sec > 24 || getNumRows () == 0 ){
11521178 LOG_WARN << " St_tpcRDOMasksC:: getSectorMask : return default mask for "
1153- << " sector= " << sector << " getNumRows()=" << getNumRows () << endm;
1179+ << " sector= " << sec << " getNumRows()=" << getNumRows () << endm;
11541180 return MASK;
11551181 }
1156- MASK = mask (((sector + 1 ) / 2 ) - 1 ); // does the mapping from sector 1-24 to packed sectors
1157- if ( sector % 2 == 0 ){ // if its even relevent bits are 6-11
1158- MASK = MASK >> 6 ;
1182+ // tpcRDOMasks_st *row = Struct();
1183+ // Take care about unsorted tpcRDOMaks table
1184+ Int_t i = -1 ;
1185+ UInt_t j = (sec + 1 ) / 2 - 1 ;
1186+ for (i = 0 ; i < 12 ; i++) {
1187+ if (sector (i) == 2 *j + 1 ) {break ;}
1188+ }
1189+ assert (i >= 0 );
1190+ // MASK = mask(((sec + 1) / 2) - 1); // does the mapping from sector 1-24 to packed sectors
1191+ MASK = mask (i); // does the mapping from sector 1-24 to packed sectors
1192+ if (runNumber () <= 19000000 || (runNumber () < 20000000 && sec != 20 )) {// no iTPC
1193+ if (sec == 16 && MASK == 0 && runNumber () > 8181000 && runNumber () < 9181000 ) MASK = 4095 ;
1194+ if ( sec % 2 == 0 ){ // if its even relevent bits are 6-11
1195+ MASK = MASK >> 6 ;
1196+ }
1197+ // Otherwise want lower 6 bits
1198+ MASK &= 0x000003F ; // Mask out higher order bits
1199+ } else if (runNumber () < 20000000 && sec == 20 ) { // Run XVIII, sector 20
1200+ MASK = 255 ;
1201+ } else { // Run XIX and higher
1202+ if ( sec % 2 == 0 ){ // if its even relevent bits are 8-13
1203+ MASK = MASK >> 8 ;
1204+ }
1205+ // Otherwise want lower 6 bits
1206+ MASK &= 255 ; // Mask out higher order bits
11591207 }
1160- // Otherwise want lower 6 bits
1161- MASK &= 0x000003F ; // Mask out higher order bits
1162- if (sector == 16 && MASK == 0 && runNumber () > 8181000 && runNumber () < 9181000 ) MASK = 4095 ;
11631208 return MASK;
11641209}
11651210// ________________________________________________________________________________
0 commit comments