// In case we don't oversample, just return the end value.
if (rate == 1) {
- counts[0] = UShort_t(TMath::Min(edep * convF + ped, Float_t(size)));
+ counts[0] = UShort_t(TMath::Min(edep * convF + ped, Float_t(maxAdc)));
+ AliDebug(2, Form("FMD%d%c[%2d,%3d]: converting ELoss %f to ADC %d (%f)",
+ detector,ring,sector,strip,edep,counts[0],convF));
return;
}
// Make the objects.
AliCDBManager* cdb = AliCDBManager::Instance();
AliFMDParameters* param = AliFMDParameters::Instance();
- Float_t maxADC = param->GetAltroChannelSize();
+ Float_t maxADC = 1.F*param->GetAltroChannelSize();
TObjArray cleanup;
if (GetTitle() && GetTitle()[0] != '\0') {
AliCDBMetaData* meta = 0;
if (TESTBIT(fMask, kPulseGain)) {
- if (fGain <= 0)
- fGain = (param->GetVA1MipRange() * param->GetEdepMip() / maxADC);
+ // Info("Exec","Default gain to %f = %d * %f / %d",
+ // (param->GetVA1MipRange() * param->GetEdepMip() / maxADC),
+ // param->GetVA1MipRange(), param->GetEdepMip(), Int_t(maxADC));
+ if (fGain <= 0) {
+ fGain = (param->GetVA1MipRange() * param->GetEdepMip() / maxADC);
+ }
fThreshold = fThresholdFactor * param->GetEdepMip();
AliFMDCalibGain* gain = MakePulseGain();
AliCDBId id(AliFMDParameters::PulseGainPath(), fRunMin, fRunMax);
fPedestalMin = TMath::Max(TMath::Min(fPedestalMin, maxADC), 0.F);
fPedestalMax = TMath::Max(TMath::Min(fPedestalMax, maxADC), fPedestalMin);
AliFMDCalibPedestal* pedestal = MakePedestal();
- AliCDBId id(AliFMDParameters::PedestalPath(), fRunMin, fRunMax);
+ AliCDBId id(AliFMDParameters::PedestalPath(),fRunMin,fRunMax);
MAKE_META(meta);
meta->SetProperty("key1", pedestal);
cdb->Put(pedestal, id, meta);
if (TESTBIT(fMask, kSampleRate)) {
fRate = TMath::Max(TMath::Min(fRate, UShort_t(8)), UShort_t(1));
AliFMDCalibSampleRate* rate = MakeSampleRate();
- AliCDBId id(AliFMDParameters::SampleRatePath(),fRunMin,fRunMax);
+ AliCDBId id(AliFMDParameters::SampleRatePath(),
+ fRunMin,fRunMax);
MAKE_META(meta);
meta->SetProperty("key1", rate);
cdb->Put(rate, id, meta);
if (TESTBIT(fMask, kStripRange)) {
fRate = TMath::Max(TMath::Min(fRate, UShort_t(8)), UShort_t(1));
AliFMDCalibStripRange* range = MakeStripRange();
- AliCDBId id(AliFMDParameters::StripRangePath(),fRunMin,fRunMax);
+ AliCDBId id(AliFMDParameters::StripRangePath(),
+ fRunMin,fRunMax);
MAKE_META(meta);
meta->SetProperty("key1", range);
cdb->Put(range, id, meta);
#include <AliCDBManager.h> // ALICDBMANAGER_H
#include <AliCDBEntry.h> // ALICDBMANAGER_H
#include <Riostream.h>
+#include <sstream>
//====================================================================
ClassImp(AliFMDParameters)
// If option contains an 'A' then everything is printed.
TString opt(option);
Bool_t showStrips = opt.Contains("a", TString::kIgnoreCase);
+ if (opt.Contains("fmd",TString::kIgnoreCase)) {
+ size_t i = opt.Index("fmd",TString::kIgnoreCase);
+ size_t j = opt.Index("]",TString::kIgnoreCase);
+ UShort_t det, sec, str;
+ Char_t ring, lbrack, rbrack, comma;
+ UInt_t ddl, addr;
+ Detector2Hardware(det, ring, sec, str, ddl, addr);
+ std::stringstream s(opt(i+4, j-i-3).Data());
+ s >> det >> ring >> lbrack >> sec >> comma >> str >> rbrack;
+ std::cout
+ << " Strip | Pedestal | Gain | ZS thr. | Address\n"
+ << "--------------+-------------------+------------+---------+---------"
+ << "\nFMD" << det << ring << "[" << std::setw(2) << sec << ","
+ << std::setw(3) << str << "] | "
+ << std::setw(7) << GetPedestal(det, ring, sec, str)
+ << "+/-" << std::setw(7)
+ << GetPedestalWidth(det, ring, sec, str)
+ << " | " << std::setw(10)
+ << GetPulseGain(det, ring, sec, str)
+ << " | " << std::setw(7)
+ << GetZeroSuppression(det, ring, sec, str)
+ << " | 0x" << std::hex << std::setw(4)
+ << std::setfill('0') << ddl << ",0x" << std::setw(3)
+ << addr << std::dec << std::setfill(' ') << std::endl;
+ return;
+ }
for (UShort_t det=1 ; det <= 3; det++) {
std::cout << "FMD" << det << std::endl;
Char_t rings[] = { 'I', (det == 1 ? '\0' : 'O'), '\0' };
<< rate << std::endl;
if (!showStrips) continue;
std::cout
- << " Strip | Pedestal | Gain | ZS thr. | Address\n"
- << "--------+-------------------+----------+---------+---------"
+ << " Strip | Pedestal | Gain | ZS thr. | Address\n"
+ << "--------+-------------------+------------+---------+---------"
<< std::endl;
for (UShort_t str = 0; str < nStr; str++) {
std::cout << " " << std::setw(3) << str << " | ";
std::cout << std::setw(7) << GetPedestal(det, *ring, sec, str)
<< "+/-" << std::setw(7)
<< GetPedestalWidth(det, *ring, sec, str)
- << " | " << std::setw(8)
+ << " | " << std::setw(10)
<< GetPulseGain(det, *ring, sec, str)
<< " | " << std::setw(5)
<< GetZeroSuppression(det, *ring, sec, str)
if (useFMD) {
// =================== FMD parameters ============================
AliFMD *FMD = new AliFMDv1("FMD", "normal FMD");
- AliLog::SetModuleDebugLevel("FMD", 1);
// FMD->UseDetailed(kFALSE);
// FMD->UseAssembly();
// FMD->UseOld();
TClonesArray* array = dynamic_cast<TClonesArray*>(align->GetObject());
if (array) sim.SetAlignObjArray(array);
}
+ AliLog::SetModuleDebugLevel("FMD", 2);
sim.SetConfigFile("$(ALICE_ROOT)/FMD/Config.C");
// sim.SetMakeSDigits("FMD");
sim.SetMakeDigits("FMD");
@endcode
@ingroup FMD_script
*/
-class DrawDigitsRecs : public AliFMDInputDigits
+class DrawDigitsRecs : public AliFMDInput
{
private:
TH2D* fAdcVsSingle; // Histogram
DrawDigitsRecs(Int_t m=1100, Double_t amin=-0.5, Double_t amax=1099.5,
Int_t n=105, Double_t mmin=-0.5, Double_t mmax=20.5)
{
+ AddLoad(kDigits);
AddLoad(kRecPoints);
fAdcVsSingle = new TH2D("adcVsSingle", "ADC vs. Multiplicity (strip)",
m, amin, amax, n, mmin, mmax);
@endcode
@ingroup FMD_script
*/
-class DrawHits : public AliFMDInputHits
+class DrawHits : public AliFMDInput
{
private:
TH2D* fElossVsPMQ; // Histogram
: fPdg(pdg)
{
AddLoad(kKinematics);
+ AddLoad(kHits);
TArrayF tkine(MakeLogScale(n, tmin, tmax));
TArrayF eloss(MakeLogScale(m, emin, emax));
TString name(Form("elossVsP%s", (fPdg == 0 ? "MQ" : "")));
#include <iostream>
#include <TStyle.h>
#include <TArrayF.h>
+#include <AliLog.h>
/** @class DrawHitsDigits
@brief Draw hit energy loss versus digit ADC
@endcode
@ingroup FMD_script
*/
-class DrawHitsDigits : public AliFMDInputHits
+class DrawHitsDigits : public AliFMDInput
{
private:
TH2D* fElossVsAdc; // Histogram
Int_t m=1100, Double_t amin=-0.5, Double_t amax=1099.5)
{
AddLoad(kDigits);
+ AddLoad(kHits);
TArrayF eloss(MakeLogScale(n, emin, emax));
TArrayF adcs(m+1);
adcs[0] = amin;
Bool_t Begin(Int_t ev)
{
fMap.Reset();
- return AliFMDInputHits::Begin(ev);
+ return AliFMDInput::Begin(ev);
}
//__________________________________________________________________
Bool_t ProcessHit(AliFMDHit* hit, TParticle*)
//__________________________________________________________________
Bool_t ProcessDigit(AliFMDDigit* digit)
{
- if (!digit) continue;
+ if (!digit) return kFALSE;
UShort_t det = digit->Detector();
Char_t rng = digit->Ring();
UShort_t sec = digit->Sector();
{
fPrimary = primary;
AddLoad(kRecPoints);
+ AddLoad(kHits);
if (fPrimary) AddLoad(kKinematics);
TArrayF eloss(MakeLogScale(n, emin, emax));
TArrayF mults(m+1);
@endcode
@ingroup FMD_script
*/
-class GetMedia : public AliFMDInputHits
+class GetMedia : public AliFMDInput
{
private:
TString fModList;
: fModList(modlist)
{
AddLoad(kGeometry);
+ AddLoad(kHits);
AddLoad(kKinematics);
fOutput = TFile::Open(output, "RECREATE");
gSystem->Load("libFMDutil.so");
AliFMDCalibFaker f(AliFMDCalibFaker::kAll, 0);
- f.SetGainSeed(30);
+ f.SetRunRange(0,0);
+ f.SetGainSeed(.002272);
f.SetThresholdFactor(3);
f.SetPedestalRange(20,40);
f.SetDeadChance(0);