Patch from Christian Holm
authorhristov <hristov@f7af4fe6-9843-0410-8265-dc069ae4e863>
Sun, 16 Apr 2006 21:09:52 +0000 (21:09 +0000)
committerhristov <hristov@f7af4fe6-9843-0410-8265-dc069ae4e863>
Sun, 16 Apr 2006 21:09:52 +0000 (21:09 +0000)
FMD/AliFMDBaseDigitizer.cxx
FMD/AliFMDCalibFaker.cxx
FMD/AliFMDParameters.cxx
FMD/Config.C
FMD/Simulate.C
FMD/scripts/DrawDigitsRecs.C
FMD/scripts/DrawHits.C
FMD/scripts/DrawHitsDigits.C
FMD/scripts/DrawHitsRecs.C
FMD/scripts/GetMedia.C
FMD/scripts/MakeCalibration.C

index 7eb02c9e6c7c8059b50276cacbc327fe2a10d29c..62ea4c0a87349b0aff74b2a08e4571ec2ecfe8b1 100644 (file)
@@ -479,7 +479,9 @@ AliFMDBaseDigitizer::ConvertToCount(Float_t   edep,
   
   // 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;
   }
   
index d7491c9e0327ec4dbc777cd399fe63969cdd5da1..baf9369793d29d8486d643ff53b6c2c1c96b2f39 100644 (file)
@@ -88,7 +88,7 @@ AliFMDCalibFaker::Exec(Option_t*)
   // 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') { 
@@ -99,8 +99,12 @@ AliFMDCalibFaker::Exec(Option_t*)
     
   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);
@@ -114,7 +118,7 @@ AliFMDCalibFaker::Exec(Option_t*)
     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);
@@ -145,7 +149,8 @@ AliFMDCalibFaker::Exec(Option_t*)
   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);
@@ -155,7 +160,8 @@ AliFMDCalibFaker::Exec(Option_t*)
   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);
index 43ed7b7f8080cb4d8fbdb97a41200ce327a1e9e6..5cf64f50dde21b69d1d047c3c64045c8692b1171 100644 (file)
@@ -39,6 +39,7 @@
 #include <AliCDBManager.h>         // ALICDBMANAGER_H
 #include <AliCDBEntry.h>           // ALICDBMANAGER_H
 #include <Riostream.h>
+#include <sstream>
 
 //====================================================================
 ClassImp(AliFMDParameters)
@@ -120,6 +121,32 @@ AliFMDParameters::Print(Option_t* option) const
   // 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' };
@@ -137,8 +164,8 @@ AliFMDParameters::Print(Option_t* option) const
                  << 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 << " | ";
@@ -151,7 +178,7 @@ AliFMDParameters::Print(Option_t* option) const
          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) 
index 32f1c10311573c0fbacda46eda8e1735730c44d7..fee5cfea8ba254935382e45ffd60230ee7daa403 100644 (file)
@@ -659,7 +659,6 @@ Config()
   if (useFMD) {
     // =================== FMD parameters ============================
     AliFMD *FMD = new AliFMDv1("FMD", "normal FMD");
-    AliLog::SetModuleDebugLevel("FMD", 1);
     // FMD->UseDetailed(kFALSE);
     // FMD->UseAssembly();
     // FMD->UseOld();
index a529c6b2a38f8351f6f0dc64228bd17aaf44da19..d18d3216f820cdc3e3ab39a280a6d247ca1164e5 100644 (file)
@@ -31,6 +31,7 @@ Simulate()
     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"); 
index 839d7ae4cd4931b9fa1b8f88c747b40a26ee829e..b053cfef28b9032d5af4cd5810eca04054db0b6c 100644 (file)
@@ -34,7 +34,7 @@
     @endcode
     @ingroup FMD_script
  */
-class DrawDigitsRecs : public AliFMDInputDigits
+class DrawDigitsRecs : public AliFMDInput
 {
 private:
   TH2D* fAdcVsSingle; // Histogram 
@@ -57,6 +57,7 @@ public:
   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);
index 95522502de6971254606fdb2a53ade0565fa79a2..af07e62dbc4275ccd2b7709ea9c5100c52aef7bd 100644 (file)
@@ -29,7 +29,7 @@
     @endcode
     @ingroup FMD_script
  */
-class DrawHits : public AliFMDInputHits
+class DrawHits : public AliFMDInput
 {
 private:
   TH2D* fElossVsPMQ; // Histogram 
@@ -59,6 +59,7 @@ public:
     : 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" : "")));
index 2ee1d09e6f2cfb5fbb1f166bf06334cc0b0bd9d0..05d286f1e71d4c29c5c5cdeca399435edf5bf4a2 100644 (file)
@@ -19,6 +19,7 @@
 #include <iostream>
 #include <TStyle.h>
 #include <TArrayF.h>
+#include <AliLog.h>
 
 /** @class DrawHitsDigits
     @brief Draw hit energy loss versus digit ADC
@@ -30,7 +31,7 @@
     @endcode
     @ingroup FMD_script
  */
-class DrawHitsDigits : public AliFMDInputHits
+class DrawHitsDigits : public AliFMDInput
 {
 private:
   TH2D* fElossVsAdc; // Histogram 
@@ -54,6 +55,7 @@ public:
                 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;
@@ -70,7 +72,7 @@ public:
   Bool_t Begin(Int_t ev) 
   {
     fMap.Reset();
-    return AliFMDInputHits::Begin(ev);
+    return AliFMDInput::Begin(ev);
   }
   //__________________________________________________________________
   Bool_t ProcessHit(AliFMDHit* hit, TParticle*) 
@@ -92,7 +94,7 @@ public:
   //__________________________________________________________________
   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();
index 2cf6680f71041733b39a11ff52a195df684527f1..f12cc89c96368c60e4d7b348ae4b2de78800b781 100644 (file)
@@ -72,6 +72,7 @@ public:
   { 
     fPrimary = primary;
     AddLoad(kRecPoints);
+    AddLoad(kHits);
     if (fPrimary) AddLoad(kKinematics);
     TArrayF eloss(MakeLogScale(n, emin, emax));
     TArrayF mults(m+1);
index daedba85d1011c2c1f04a343a89fa7ddbff276a5..cb98f4be214bcb031f7cbfed288b670491856fad 100644 (file)
@@ -106,7 +106,7 @@ struct Media : public TNamed
     @endcode
     @ingroup FMD_script
  */
-class GetMedia : public AliFMDInputHits
+class GetMedia : public AliFMDInput
 {
 private:
   TString    fModList;
@@ -124,6 +124,7 @@ public:
     :  fModList(modlist)
   { 
     AddLoad(kGeometry);
+    AddLoad(kHits);
     AddLoad(kKinematics);
 
     fOutput = TFile::Open(output, "RECREATE");
index faf4829ec8ca6e19744994dcfed3481a39120de4..e787d464e1c3d2f2134fbc582d361c32557f1689 100644 (file)
@@ -20,7 +20,8 @@ MakeCalibration()
 
   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);