fAltroChannelSize(0),
fChannelsPerAltro(0),
fPedestalFactor(0),
+ fZSPre(0),
+ fZSPost(0),
+ fZSPedSubtract(kFALSE),
fFixedPedestal(0),
fFixedPedestalWidth(0),
fFixedZeroSuppression(0),
for (UShort_t sec = 0; sec < nSector; sec++) {
for (UShort_t str = 0; str < nStrip; str++) {
Int_t idx = DET2IDX(det, ring, sec, str);
- UInt_t ddl, addr;
+ UShort_t ddl, addr, time, sam=0;
Double_t val = 0;
switch (what) {
case kLocalPulseGain: // Path to PulseGain calib object
case kLocalSampleRate: // Path to SampleRate calib object
val = GetSampleRate(det,ring,sec,str); break;
case kLocalAltroMap: // Path to AltroMap calib object
- Detector2Hardware(det,ring,sec,str, ddl, addr);
+ Detector2Hardware(det,ring,sec,str,sam,ddl,addr,time);
val = addr; break;
case kLocalZeroSuppression: // Path to ZeroSuppression cal object
val = GetZeroSuppression(det,ring,sec,str); break;
if (det == 1 && ring == 'O') continue;
UShort_t min = GetMinStrip(det, ring, 0, 0);
UShort_t max = GetMaxStrip(det, ring, 0, 0);
- UShort_t rate = GetSampleRate(det, ring, 0, 0);
std::cout << "FMD" << det << ring
<< " Strip range: "
<< std::setw(3) << min << ","
- << std::setw(3) << max << " Rate: "
- << std::setw(2) << rate << std::endl;
+ << std::setw(3) << max << std::endl;
- if (!showStrips) continue;
UShort_t nSec = ( ring == 'I' ? 20 : 40 );
UShort_t nStr = ( ring == 'I' ? 512 : 256 );
for (UShort_t sec = minSector; sec < maxSector && sec < nSec; sec++) {
+
+ UShort_t rate = GetSampleRate(det, ring, sec, 0);
+ std::cout << "FMD" << det << ring << "[" << std::setw(2) << sec
+ << "] sample rate: " << rate << std::endl;
+
+ if (!showStrips) continue;
std::cout
<< " Strip | Pedestal | Gain | ZS thr. | Address\n"
<< "--------+-------------------+------------+---------+---------"
std::cout << "dead" << std::endl;
continue;
}
- UInt_t ddl, addr;
- Detector2Hardware(det, ring, sec, str, ddl, addr);
+ UShort_t ddl, addr, time, sam=0;
+ Detector2Hardware(det, ring, sec, str, sam, ddl, addr, time);
std::cout << std::setw(7) << GetPedestal(det, ring, sec, str)
<< "+/-" << std::setw(7)
<< GetPedestalWidth(det, ring, sec, str)
}
+//____________________________________________________________________
+Bool_t
+AliFMDParameters::Hardware2Detector(UShort_t ddl, UShort_t addr,
+ UShort_t timebin,
+ UShort_t& det, Char_t& ring,
+ UShort_t& sec, Short_t& str,
+ UShort_t& sam) const
+{
+ // Translate a hardware address to detector coordinates.
+ //
+ // See also Hardware2Detector that accepts 4 inputs
+ if (!fAltroMap) return kFALSE;
+ UShort_t board, chip, chan;
+ fAltroMap->ChannelAddress(addr, board, chip, chan);
+ return Hardware2Detector(ddl,board,chip,chan,timebin,det,ring,sec,str,sam);
+}
+//____________________________________________________________________
+Bool_t
+AliFMDParameters::Hardware2Detector(UShort_t ddl, UShort_t board,
+ UShort_t chip, UShort_t chan,
+ UShort_t timebin,
+ UShort_t& det, Char_t& ring,
+ UShort_t& sec, Short_t& str,
+ UShort_t& sam) const
+{
+ // Translate a hardware address to detector coordinates.
+ //
+ // See also Hardware2Detector that accepts 4 inputs
+ if (!fAltroMap) return kFALSE;
+ if (fAltroMap->DDL2Detector(ddl) < 0) return kFALSE;
+ Short_t stripBase = 0;
+ if (!fAltroMap->Channel2StripBase(board,chip,chan, ring, sec, stripBase))
+ return kFALSE;
+ UShort_t preSamples = GetPreSamples(det, ring, sec, stripBase);
+ UShort_t sampleRate = GetSampleRate(det, ring, sec, stripBase);
+ Short_t stripOff = 0;
+ fAltroMap->Timebin2Strip(sec, timebin, preSamples, sampleRate, stripOff, sam);
+ str = stripBase + stripOff;
+ AliFMDDebug(50, ("%d/0x%02x/0x%x/0x%x/%04d -> FMD%d%c[%02d,%03d]-%d"
+ " (pre=%2d, rate=%d)",
+ ddl, board, chip, chan, timebin,
+ det, ring, sec, str, sam, preSamples, sampleRate));
+ return kTRUE;
+}
+
+#if 0
//__________________________________________________________________
Bool_t
-AliFMDParameters::Hardware2Detector(UInt_t ddl, UInt_t board,
- UInt_t chip, UInt_t chan,
+AliFMDParameters::Hardware2Detector(UShort_t ddl, UShort_t board,
+ UShort_t chip, UShort_t chan,
UShort_t& det, Char_t& ring,
- UShort_t& sec, UShort_t& str) const
+ UShort_t& sec, Short_t& str) const
{
// Map hardware address to detector index
if (!fAltroMap) return kFALSE;
}
//__________________________________________________________________
Bool_t
-AliFMDParameters::Hardware2Detector(UInt_t ddl, UInt_t addr,
+AliFMDParameters::Hardware2Detector(UShort_t ddl, UShort_t addr,
UShort_t& det, Char_t& ring,
- UShort_t& sec, UShort_t& str) const
+ UShort_t& sec, Short_t& str) const
{
// Map hardware address to detector index
if (!fAltroMap) return kFALSE;
return fAltroMap->Hardware2Detector(ddl, addr, det, ring, sec, str);
}
+#endif
+
+//____________________________________________________________________
+Bool_t
+AliFMDParameters::Detector2Hardware(UShort_t det, Char_t ring,
+ UShort_t sec, UShort_t str,
+ UShort_t sam,
+ UShort_t& ddl, UShort_t& board,
+ UShort_t& altro, UShort_t& channel,
+ UShort_t& timebin) const
+{
+ if (!fAltroMap) return kFALSE;
+ UShort_t preSamples = GetPreSamples(det, ring, sec, str);
+ UShort_t sampleRate = GetSampleRate(det, ring, sec, str);
+ UShort_t strip = str - GetMinStrip(det,ring,sec,str);
+ return fAltroMap->Detector2Hardware(det, ring, sec, strip, sam,
+ preSamples, sampleRate,
+ ddl, board, altro, channel, timebin);
+}
+
+
+
+//____________________________________________________________________
+Bool_t
+AliFMDParameters::Detector2Hardware(UShort_t det, Char_t ring,
+ UShort_t sec, UShort_t str,
+ UShort_t sam,
+ UShort_t& ddl, UShort_t& addr,
+ UShort_t& timebin) const
+{
+ if (!fAltroMap) return kFALSE;
+ UShort_t preSamples = GetPreSamples(det, ring, sec, str);
+ UShort_t sampleRate = GetSampleRate(det, ring, sec, str);
+ UShort_t strip = str - GetMinStrip(det,ring,sec,str);
+ return fAltroMap->Detector2Hardware(det, ring, sec, strip, sam,
+ preSamples, sampleRate,
+ ddl, addr, timebin);
+}
+#if 0
//__________________________________________________________________
Bool_t
AliFMDParameters::Detector2Hardware(UShort_t det, Char_t ring,
UShort_t sec, UShort_t str,
- UInt_t& ddl, UInt_t& board,
- UInt_t& chip, UInt_t& chan) const
+ UShort_t& ddl, UShort_t& board,
+ UShort_t& chip, UShort_t& chan) const
{
// Map detector index to hardware address
if (!fAltroMap) return kFALSE;
Bool_t
AliFMDParameters::Detector2Hardware(UShort_t det, Char_t ring,
UShort_t sec, UShort_t str,
- UInt_t& ddl, UInt_t& addr) const
+ UShort_t& ddl, UShort_t& addr) const
{
// Map detector index to hardware address
if (!fAltroMap) return kFALSE;
return fAltroMap->Detector2Hardware(det, ring, sec, str, ddl, addr);
}
-
+#endif
//__________________________________________________________________
Float_t
}
return fEdepMip;
}
-
-
-
+//____________________________________________________________________
+Float_t
+AliFMDParameters::GetDACPerMIP() const
+{
+ //This is the conversion from the Digital-to-Analog-Converter setting
+ // to the number of MIPs. The number was measured in the NBI lab during
+ // August 2008.
+ return 29.67;
+}
+
//____________________________________________________________________
//
// EOF