Cleaup the situation NTimeBin in simulation
authorcblume <cblume@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 26 Nov 2009 12:56:03 +0000 (12:56 +0000)
committercblume <cblume@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 26 Nov 2009 12:56:03 +0000 (12:56 +0000)
TRD/AliTRDSimParam.cxx
TRD/AliTRDclusterizer.cxx
TRD/AliTRDdigitizer.cxx
TRD/AliTRDdigitsManager.cxx
TRD/AliTRDdigitsParam.cxx
TRD/AliTRDdigitsParam.h
TRD/AliTRDmcmSim.cxx
TRD/AliTRDrawData.cxx
TRD/AliTRDrawData.h
TRD/AliTRDrawFastStream.cxx
TRD/AliTRDrawStream.cxx

index fd8fff8..4481690 100644 (file)
@@ -152,8 +152,7 @@ void AliTRDSimParam::Init()
   fPRFOn             = kTRUE;
 
   // The number of time bins
-  //fNTimeBins         = 30;
-  fNTimeBins         = 24;
+  fNTimeBins         = 30;
 
   ReInit();
 
index 7022450..bf637ad 100644 (file)
@@ -784,7 +784,6 @@ Bool_t AliTRDclusterizer::MakeClusters(Int_t det)
     return kFALSE;
   }
 
-
   fMaxThresh            = fReconstructor->GetRecoParam()->GetClusMaxThresh();
   fSigThresh            = fReconstructor->GetRecoParam()->GetClusSigThresh();
   fMinMaxCutSigma       = fReconstructor->GetRecoParam()->GetMinMaxCutSigma();
index e08c0ee..308dcb5 100644 (file)
@@ -608,6 +608,13 @@ Bool_t AliTRDdigitizer::MakeDigits()
   Int_t    *nhit = new Int_t[kNdet];
 
   AliTRDarraySignal *signals = 0x0;
+
+  // 
+  if (calibration->GetNumberOfTimeBinsDCS() != AliTRDSimParam::Instance()->GetNTimeBins()) {
+    AliWarning(Form("Number of time bins is different to OCDB value [SIM=%d, OCDB=%d]"
+                  ,AliTRDSimParam::Instance()->GetNTimeBins()
+                   ,calibration->GetNumberOfTimeBinsDCS()));
+  }
  
   // Sort all hits according to detector number
   if (!SortHits(hits,nhit)) {
@@ -650,6 +657,10 @@ Bool_t AliTRDdigitizer::MakeDigits()
   delete [] hits;
   delete [] nhit;
 
+  // Save the values for the raw data headers
+  fDigitsManager->GetDigitsParam()->SetNTimeBins(AliTRDSimParam::Instance()->GetNTimeBins());
+  fDigitsManager->GetDigitsParam()->SetADCbaseline(AliTRDSimParam::Instance()->GetADCbaseline());
+
   return kTRUE;
 
 }
@@ -830,7 +841,7 @@ Bool_t AliTRDdigitizer::ConvertHits(Int_t det
                   * commonParam->GetSamplingFrequency())) - 1;
   }
 
-  Int_t   nTimeTotal   = fDigitsManager->GetDigitsParam()->GetNTimeBins();
+  Int_t   nTimeTotal   = simParam->GetNTimeBins();
   Float_t samplingRate = commonParam->GetSamplingFrequency();
   Float_t elAttachProp = simParam->GetElAttachProp() / 100.0; 
 
@@ -1184,7 +1195,7 @@ Bool_t AliTRDdigitizer::Signal2ADC(Int_t det, AliTRDarraySignal *signals)
 
   Int_t nRowMax    = fGeo->GetPadPlane(det)->GetNrows();
   Int_t nColMax    = fGeo->GetPadPlane(det)->GetNcols();
-  Int_t nTimeTotal = fDigitsManager->GetDigitsParam()->GetNTimeBins();
+  Int_t nTimeTotal = simParam->GetNTimeBins();
 
   // The gainfactor calibration objects
   const AliTRDCalDet *calGainFactorDet      = calibration->GetGainFactorDet();  
@@ -1300,7 +1311,7 @@ Bool_t AliTRDdigitizer::Signal2SDigits(Int_t det, AliTRDarraySignal *signals)
 
   Int_t nRowMax    = fGeo->GetPadPlane(det)->GetNrows();
   Int_t nColMax    = fGeo->GetPadPlane(det)->GetNcols();
-  Int_t nTimeTotal = fDigitsManager->GetDigitsParam()->GetNTimeBins();
+  Int_t nTimeTotal = AliTRDSimParam::Instance()->GetNTimeBins();
 
   // Get the container for the digits of this detector
 
@@ -1386,7 +1397,7 @@ Bool_t AliTRDdigitizer::Digits2SDigits(AliTRDdigitsManager * const manDig
 
     Int_t nRowMax    = fGeo->GetPadPlane(det)->GetNrows();
     Int_t nColMax    = fGeo->GetPadPlane(det)->GetNcols();
-    Int_t nTimeTotal = calibration->GetNumberOfTimeBins();
+    Int_t nTimeTotal = manDig->GetDigitsParam()->GetNTimeBins();
 
     // Get the calibration objects
     //calGainFactorROC      = calibration->GetGainFactorROC(det);
@@ -1410,6 +1421,10 @@ Bool_t AliTRDdigitizer::Digits2SDigits(AliTRDdigitsManager * const manDig
     tracks1->Allocate(nRowMax,nColMax,nTimeTotal);
     tracks2->Allocate(nRowMax,nColMax,nTimeTotal);
 
+    // Keep the digits param
+    manSDig->GetDigitsParam()->SetNTimeBins(manDig->GetDigitsParam()->GetNTimeBins());
+    manSDig->GetDigitsParam()->SetADCbaseline(manDig->GetDigitsParam()->GetADCbaseline());
+
     if (digits->HasData()) {
 
       digits->Expand();
@@ -1530,13 +1545,20 @@ Bool_t AliTRDdigitizer::MergeSDigits()
     AliDebug(1,"Only one input file.");
   }
   
-  Int_t nTimeTotal = calibration->GetNumberOfTimeBins();  
+  Int_t nTimeTotal = fSDigitsManager->GetDigitsParam()->GetNTimeBins();
   Int_t iMerge = 0;
 
   while (mergeSDigitsManager) {
 
+    if (mergeSDigitsManager->GetDigitsParam()->GetNTimeBins() != nTimeTotal) {
+      AliError(Form("Mismatch in the number of time bins [%d,%d]"
+                   ,nTimeTotal
+                  ,mergeSDigitsManager->GetDigitsParam()->GetNTimeBins()));
+      return kFALSE;
+    }
+
     iMerge++;
-      
+
     // Loop through the detectors
     for (Int_t iDet = 0; iDet < AliTRDgeometry::Ndet(); iDet++) {
 
@@ -1667,6 +1689,9 @@ Bool_t AliTRDdigitizer::ConvertSDigits()
 
   } // for: detector numbers
 
+  // Save the values for the raw data headers
+  fDigitsManager->GetDigitsParam()->SetNTimeBins(AliTRDSimParam::Instance()->GetNTimeBins());
+  fDigitsManager->GetDigitsParam()->SetADCbaseline(AliTRDSimParam::Instance()->GetADCbaseline());
 
   return kTRUE;
 
@@ -1694,7 +1719,7 @@ Bool_t AliTRDdigitizer::CopyDictionary(Int_t det)
 
   Int_t nRowMax    = fGeo->GetPadPlane(det)->GetNrows();
   Int_t nColMax    = fGeo->GetPadPlane(det)->GetNcols();
-  Int_t nTimeTotal = calibration->GetNumberOfTimeBins();
+  Int_t nTimeTotal = AliTRDSimParam::Instance()->GetNTimeBins();
 
   Int_t row  = 0;
   Int_t col  = 0;
index 08d2b6b..9827a4a 100644 (file)
@@ -239,8 +239,6 @@ void AliTRDdigitsManager::CreateArrays()
       delete fDigitsParam;
     }
   fDigitsParam = new AliTRDdigitsParam();
-  fDigitsParam->SetNTimeBins(AliTRDSimParam::Instance()->GetNTimeBins());
-  fDigitsParam->SetADCbaseline(AliTRDSimParam::Instance()->GetADCbaseline());
 
 }
 
@@ -467,7 +465,7 @@ Bool_t AliTRDdigitsManager::ReadDigits(TTree * const tree)
 Bool_t AliTRDdigitsManager::WriteDigits()
 {
   //
-  // Writes out the TRD-digits and the dictionaries
+  // Writes out the TRD-digits, the dictionaries and the digitsPaam
   //
 
   if (!StoreArrayDigits())
@@ -484,6 +482,12 @@ Bool_t AliTRDdigitsManager::WriteDigits()
          return kFALSE;
        }
     }
+
+  if (!StoreDigitsParam())
+    {
+      AliError("Error while storing digitsParam\n");
+      return kFALSE;
+    }
   
   // Write the new tree to the output file
   fTree->AutoSave();
index e465802..e411242 100644 (file)
 #include "AliLog.h"
 
 #include "AliTRDdigitsParam.h"
-#include "AliTRDcalibDB.h"
 
 ClassImp(AliTRDdigitsParam)
 
 //_____________________________________________________________________________
 AliTRDdigitsParam::AliTRDdigitsParam()
   :TObject()
-  ,fCheckOCDB(kTRUE)
   ,fNTimeBins(0)
   ,fADCbaseline(0)
 {
@@ -57,7 +55,6 @@ AliTRDdigitsParam::~AliTRDdigitsParam()
 //_____________________________________________________________________________
 AliTRDdigitsParam::AliTRDdigitsParam(const AliTRDdigitsParam &p)
   :TObject(p)
-  ,fCheckOCDB(p.fCheckOCDB)
   ,fNTimeBins(p.fNTimeBins)
   ,fADCbaseline(p.fADCbaseline)
 {
@@ -98,7 +95,6 @@ void AliTRDdigitsParam::Copy(TObject &p) const
     return;
   }  
 
-  target->fCheckOCDB   = fCheckOCDB;
   target->fNTimeBins   = fNTimeBins;
   target->fADCbaseline = fADCbaseline;
 
@@ -107,37 +103,3 @@ void AliTRDdigitsParam::Copy(TObject &p) const
   }
 
 }
-
-//_____________________________________________________________________________
-Bool_t AliTRDdigitsParam::SetNTimeBins(Int_t ntb)
-{
-  //
-  // Sets the number of time bins
-  // Per default an automatic consistency check with the corresponding
-  // OCDB entry is performed. This check can be disabled by setting
-  // SetCheckOCDB(kFALSE)
-  //
-
-  fNTimeBins = ntb;
-
-  if (fCheckOCDB) {
-    Int_t nTimeBinsOCDB = AliTRDcalibDB::Instance()->GetNumberOfTimeBinsDCS();
-    if (nTimeBinsOCDB > -1) {
-      if (fNTimeBins == nTimeBinsOCDB) {
-        return kTRUE;
-      }
-      else {
-        AliError(Form("Number of timebins does not match OCDB value (raw:%d, OCDB:%d)"
-                     ,fNTimeBins,nTimeBinsOCDB));
-        return kFALSE;
-      }
-    }
-    else {
-      return kTRUE;
-    }
-  }
-  else {
-    return kTRUE;
-  }
-
-}
index b7267fb..72eed40 100644 (file)
@@ -25,24 +25,21 @@ class AliTRDdigitsParam : public TObject
 
     virtual void    Copy(TObject &p) const;
 
-            void    SetCheckOCDB(Bool_t check = kTRUE)         { fCheckOCDB            = check;    }
-            Bool_t  SetNTimeBins(Int_t ntb);
+            void    SetNTimeBins(Int_t ntb)                    { fNTimeBins            = ntb;      }     
             void    SetPretiggerPhase(Int_t det, UInt_t phase) { fPretriggerPhase[det] = phase;    }
             void    SetADCbaseline(Int_t baseline)             { fADCbaseline          = baseline; }
 
-            Bool_t  CheckOCDB() const                          { return fCheckOCDB;                }
             Int_t   GetNTimeBins() const                       { return fNTimeBins;                }
             UInt_t  GetPretriggerPhase(Int_t det) const        { return fPretriggerPhase[det];     }
             Int_t   GetADCbaseline() const                     { return fADCbaseline;              }
 
   protected:
 
-           Bool_t  fCheckOCDB;            //  Do a consistency check with the corresponding OCDB entry
             Int_t   fNTimeBins;            //  Number of timebins
             UInt_t  fPretriggerPhase[540]; //  Pretrigger phase for each detector
             Int_t   fADCbaseline;          //  ADC baseline, given in ADC channels
 
-    ClassDef(AliTRDdigitsParam,3)          //  The parameters for digits
+    ClassDef(AliTRDdigitsParam,4)          //  The parameters for digits
 
 };
 #endif
index b4aac29..fb34a84 100644 (file)
@@ -199,7 +199,8 @@ void AliTRDmcmSim::Init( Int_t det, Int_t robPos, Int_t mcmPos, Bool_t /* newEve
   fRobPos        = robPos;
   fMcmPos        = mcmPos;
   fNADC          = fFeeParam->GetNadcMcm();
-  fNTimeBin      = fCal->GetNumberOfTimeBins();
+  //fNTimeBin      = fCal->GetNumberOfTimeBins();
+  fNTimeBin      = AliTRDSimParam::Instance()->GetNTimeBins();
   fRow           = fFeeParam->GetPadRowFromMCM( fRobPos, fMcmPos );
   fMaxTracklets  = fFeeParam->GetMaxNrOfTracklets();  
   
@@ -242,7 +243,8 @@ void AliTRDmcmSim::Reset()
     for( Int_t it = 0 ; it < fNTimeBin ; it++ ) {
       fADCR[iadc][it] = 0;
       fADCF[iadc][it] = 0;
-      fZSM [iadc][it] = 1;   // Default unread = 1
+      fZSM [iadc][it] = 1;   // Default unread = 1  simulator.SetMakeSDigits("TRD TOF PHOS HMPID EMCAL MUON FMD ZDC PMD T0 VZERO");
+
     }
     fZSM1Dim[iadc] = 1;      // Default unread = 1
     fGainCounterA[iadc] = 0;
@@ -299,8 +301,9 @@ Bool_t AliTRDmcmSim::LoadMCM(AliRunLoader* const runloader, Int_t det, Int_t rob
   if (digits->HasData()) {
     digits->Expand();
 
-    if (fNTimeBin != digits->GetNtime()) 
+    if (fNTimeBin != digits->GetNtime()) {
       SetNTimebins(digits->GetNtime());
+    }
 
     Int_t padrow = fFeeParam->GetPadRowFromMCM(rob, mcm);
     Int_t padcol = 0;
@@ -577,8 +580,9 @@ void AliTRDmcmSim::SetData(AliTRDarrayADC* const adcArray, AliTRDdigitsManager *
 
   fDigitsManager = digitsManager;
 
-  if (fNTimeBin != adcArray->GetNtime())
+  if (fNTimeBin != adcArray->GetNtime()) {
     SetNTimebins(adcArray->GetNtime());
+  }
 
   Int_t offset = (fMcmPos % 4) * 21 + (fRobPos % 2) * 84;
 
index 175d65b..48edede 100644 (file)
@@ -41,6 +41,7 @@
 #include "AliTRDSignalIndex.h"
 #include "AliTRDfeeParam.h"
 #include "AliTRDmcmSim.h"
+#include "AliTRDdigitsParam.h"
 
 ClassImp(AliTRDrawData)
 
@@ -56,6 +57,7 @@ AliTRDrawData::AliTRDrawData()
   ,fNumberOfDDLs(0)
   ,fTrackletTree(NULL)
   ,fTrackletContainer(NULL)
+  ,fNTimeBins(0)
   ,fSMindexPos(0)
   ,fStackindexPos(0)
   ,fEventCounter(0)
@@ -78,6 +80,7 @@ AliTRDrawData::AliTRDrawData(const AliTRDrawData &r)
   ,fNumberOfDDLs(0)
   ,fTrackletTree(NULL)
   ,fTrackletContainer(NULL)
+  ,fNTimeBins(0)
   ,fSMindexPos(0)
   ,fStackindexPos(0)
   ,fEventCounter(0)
@@ -173,6 +176,9 @@ Bool_t AliTRDrawData::Digits2Raw(AliTRDdigitsManager *digitsManager)
   // Buffer to temporary store half chamber data
   UInt_t     *hcBuffer    = new UInt_t[kMaxHcWords];
   
+  // set the number of time bin 
+  fNTimeBins = digitsManager->GetDigitsParam()->GetNTimeBins(); 
+
   Bool_t newEvent = kFALSE;  // only for correct readout tree
   Bool_t newSM    = kFALSE;  // new SM flag, for writing SM index words
   Bool_t newStack = kFALSE;  // new stack flag, for writing stack index words
@@ -699,7 +705,8 @@ Int_t AliTRDrawData::ProduceHcDataV1andV2(AliTRDarrayADC *digits, Int_t side
   Int_t         sect = fGeo->GetSector( det );  // Sector (=iDDL)
   Int_t         nRow = fGeo->GetRowMax( layer, stack, sect );
   Int_t         nCol = fGeo->GetColMax( layer );
-  const Int_t kNTBin = AliTRDcalibDB::Instance()->GetNumberOfTimeBins();
+  //const Int_t kNTBin = AliTRDcalibDB::Instance()->GetNumberOfTimeBins();
+  const Int_t kNTBin = fNTimeBins;
   Int_t       kCtype = 0;                       // Chamber type (0:C0, 1:C1)
   Int_t          iEv = 0xA;                     // Event ID. Now fixed to 10, how do I get event id?
   UInt_t           x = 0;                       // General used number
@@ -870,7 +877,8 @@ Int_t AliTRDrawData::ProduceHcDataV3(AliTRDarrayADC *digits, Int_t side , Int_t
   Int_t         sect = fGeo->GetSector( det );  // Sector (=iDDL)
   Int_t         nRow = fGeo->GetRowMax( layer, stack, sect );
   Int_t         nCol = fGeo->GetColMax( layer );
-  const Int_t kNTBin = AliTRDcalibDB::Instance()->GetNumberOfTimeBins();
+  //const Int_t kNTBin = AliTRDcalibDB::Instance()->GetNumberOfTimeBins();
+  const Int_t kNTBin = fNTimeBins;
   Int_t       kCtype = 0;                       // Chamber type (0:C0, 1:C1)
   //Int_t          iEv = 0xA;                     // Event ID. Now fixed to 10, how do I get event id?
 
@@ -1103,7 +1111,8 @@ void AliTRDrawData::WriteIntermediateWords(UInt_t* buf, Int_t& nw, Int_t& of, co
     Int_t        stack = fGeo->GetStack( det );   // Stack
     Int_t         sect = fGeo->GetSector( det );  // Sector (=iDDL)
     Int_t           rv = fFee->GetRAWversion();
-    const Int_t kNTBin = AliTRDcalibDB::Instance()->GetNumberOfTimeBins();
+    //const Int_t kNTBin = AliTRDcalibDB::Instance()->GetNumberOfTimeBins();
+    const Int_t kNTBin = fNTimeBins;
     UInt_t           x = 0;
 
     // Write end of tracklet marker
@@ -1165,8 +1174,9 @@ void AliTRDrawData::WriteIntermediateWordsV2(UInt_t* buf, Int_t& nw, Int_t& of,
     Int_t        stack = fGeo->GetStack( det );   // Stack
     Int_t         sect = fGeo->GetSector( det );  // Sector (=iDDL)
     Int_t           rv = fFee->GetRAWversion();
-    const Int_t kNTBin = AliTRDcalibDB::Instance()->GetNumberOfTimeBins();
-       Bool_t trackletOn = fFee->GetTracklet();
+    //const Int_t kNTBin = AliTRDcalibDB::Instance()->GetNumberOfTimeBins();    // old method, fetch the info from OCDB
+    const Int_t kNTBin = fNTimeBins;
+    Bool_t  trackletOn = fFee->GetTracklet();
     UInt_t           x = 0;
 
     // Write end of tracklet marker
index 449c308..38fac03 100644 (file)
@@ -86,7 +86,8 @@ class AliTRDrawData : public TObject {
        static const UInt_t fgkEndOfTrackletMarker  = 0x10001000; // This marks the end of tracklet data words
        static const UInt_t fgkEndOfDataMarker      = 0x00000000; // This marks the end of HC data words
 
-       Int_t   fSMindexPos;                // Position of SM index word
+    Int_t   fNTimeBins;                 // number of time bin
+    Int_t   fSMindexPos;                // Position of SM index word
     Int_t   fStackindexPos;             // Position of SM index word
     UInt_t  fEventCounter;              // Event counter(starting from 1)
 
index 9b9407e..c9ca09a 100644 (file)
@@ -675,7 +675,6 @@ Int_t AliTRDrawFastStream::NextChamber(AliTRDdigitsManager *digitsManager, UInt_
       // Set digitparam variables\r
       digitsparam = (AliTRDdigitsParam *) digitsManager->GetDigitsParam();\r
       if (!fIsGlobalDigitsParamSet){\r
-        digitsparam->SetCheckOCDB(kFALSE);\r
         digitsparam->SetNTimeBins(ntbins);\r
        fCommonAdditive=10;\r
         digitsparam->SetADCbaseline(fCommonAdditive);\r
index ddbed54..74169a4 100644 (file)
@@ -770,7 +770,6 @@ Int_t AliTRDrawStream::NextChamber(AliTRDdigitsManager *const digitsManager, UIn
       digitsparam = (AliTRDdigitsParam *) digitsManager->GetDigitsParam();\r
       digitsparam->SetPretiggerPhase(det,GetPreTriggerPhase());\r
       if (!fIsGlobalDigitsParamSet){\r
-        digitsparam->SetCheckOCDB(kFALSE);\r
         digitsparam->SetNTimeBins(ntbins);\r
        fCommonAdditive=10;\r
         digitsparam->SetADCbaseline(fCommonAdditive);\r
@@ -1311,11 +1310,13 @@ Bool_t AliTRDrawStream::IsMCMheaderOK()
     if (fgDebugFlag) AliDebug(11,Form("Event from the past? Current %d Last %d %s.\n", fEventCounter, fLastEventCounter, DumpMCMinfo(fMCM)));\r
   }\r
 \r
-  if ( fMCM->fADCmaskCorrupted > 0 )\r
+  if ( fMCM->fADCmaskCorrupted > 0 ) {\r
     return kFALSE;\r
+  }\r
 \r
-  if ( fMCM->fMCMhdCorrupted > 0 )\r
+  if ( fMCM->fMCMhdCorrupted > 0 ) {\r
     return kFALSE;\r
+  }\r
 \r
   return kTRUE;\r
 }\r
@@ -1346,7 +1347,6 @@ Bool_t AliTRDrawStream::DecodeMCMheader()
     fpPos--; \r
     return kFALSE;\r
   }\r
-\r
   fMCM->fROW = fTRDfeeParam->GetPadRowFromMCM(fMCM->fROB, fMCM->fMCM); \r
 \r
   if ((fHC->fRawVMajor > 2 && fHC->fRawVMajor <5) || ((fHC->fRawVMajor & 32) == 32)) { //cover old and new version definition of ZS data\r
@@ -1379,9 +1379,10 @@ Bool_t AliTRDrawStream::DecodeMCMheader()
     AliDebug(7, DumpMCMadcMask(fMCM));\r
   }\r
 \r
-  if (IsMCMheaderOK() == kFALSE)\r
+  if (IsMCMheaderOK() == kFALSE) {\r
     return kFALSE;\r
-    \r
+  }    \r
+\r
   return kTRUE;\r
 }\r
 \r
@@ -1503,6 +1504,7 @@ Bool_t AliTRDrawStream::DecodeHC()
   //\r
   // decode hc header and data\r
   //\r
+\r
   if (DecodeHCheader() == kFALSE) {\r
     if (fWarnError) AliWarning(Form("HC Header decode failed. H0 Error: %d H1 Error: %d",fHC->fH0Corrupted,fHC->fH1Corrupted));\r
     if (fRawReader) fRawReader->AddMajorErrorLog(kHCHeaderCorrupt, "HC header corrupted"); \r
@@ -1542,7 +1544,7 @@ Bool_t AliTRDrawStream::DecodeHC()
       if (fHC->fCorrupted < 4) fHC->fCorrupted += 4; // benchmark hc data corruption as 4\r
     \r
       if (fgSkipData == kTRUE || fHC->fCorrupted >= 16) { // stop HC data reading\r
-        fHC->fMCMmax++; \r
+        fHC->fMCMmax++;\r
         return kFALSE;\r
       } \r
           \r