]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
bugfix DigitReaderPacked: raw reader NextEvent added; more options in TPCDigitDumpCom...
authorrichterm <richterm@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 28 Jan 2008 22:44:53 +0000 (22:44 +0000)
committerrichterm <richterm@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 28 Jan 2008 22:44:53 +0000 (22:44 +0000)
HLT/TPCLib/AliHLTTPCDigitDumpComponent.cxx
HLT/TPCLib/AliHLTTPCDigitDumpComponent.h
HLT/TPCLib/AliHLTTPCDigitReader.cxx
HLT/TPCLib/AliHLTTPCDigitReader.h
HLT/TPCLib/AliHLTTPCDigitReaderPacked.cxx
HLT/TPCLib/AliHLTTPCDigitReaderPacked.h
HLT/TPCLib/comp/AliHLTTPCCompModelDeconverter.h

index d4cfc72b69c4eea6614d197e89146d2b7d3708a8..6e81fd9805c1c6ff2a4198da07e86e71d0d5816e 100644 (file)
@@ -45,7 +45,9 @@ AliHLTTPCDigitDumpComponent::AliHLTTPCDigitDumpComponent()
   :
   AliHLTFileWriter(),
   fRawreaderMode(DefaultRawreaderMode),
-  fDigitReaderType(kDigitReaderRaw)
+  fDigitReaderType(kDigitReaderRaw),
+  fRcuTrailerSize(2),
+  fUnsorted(false)
 {
   // see header file for class documentation
   // or
@@ -129,6 +131,29 @@ int AliHLTTPCDigitDumpComponent::ScanArgument(int argc, const char** argv)
       break;
     }
 
+    // -rcutrailersize
+    if (argument.CompareTo("-rcutrailersize")==0) {
+      if ((bMissingParam=(++i>=argc))) break;
+      char *endptr=NULL;
+      fRcuTrailerSize=strtoul(argv[i], &endptr, 0);
+      if (/*endptr ||*/ fRcuTrailerSize<1) {
+       HLTError("invalid parameter '%s', %s", argv[i], endptr==NULL?"number >= 1 expected":"can not convert string to number");
+       iResult=-EINVAL;
+      }
+      break;
+    }
+
+    // -unsorted
+    if (argument.CompareTo("-unsorted")==0) {
+      fUnsorted=true;
+      break;
+    }
+
+    // -sorted
+    if (argument.CompareTo("-sorted")==0) {
+      fUnsorted=false;
+      break;
+    }
   } while (0); // just use the do/while here to have the option of breaking
 
   if (bMissingParam) iResult=-EPROTO;
@@ -188,6 +213,9 @@ int AliHLTTPCDigitDumpComponent::DumpEvent( const AliHLTComponentEventData& evtD
        case kDigitReaderPacked:
          HLTInfo("create DigitReaderPacked");
          pReader=new AliHLTTPCDigitReaderPacked; 
+         if (pReader && fRcuTrailerSize==1) {
+           pReader->SetOldRCUFormat(true);
+         }
          break;
        case kDigitReaderRaw:
          HLTInfo("create DigitReaderRaw");
@@ -199,6 +227,7 @@ int AliHLTTPCDigitDumpComponent::DumpEvent( const AliHLTComponentEventData& evtD
          iResult=-EFAULT;
          break;
        }
+       pReader->SetUnsorted(fUnsorted);
        iResult=pReader->InitBlock(pDesc->fPtr,pDesc->fSize,firstRow,lastRow,part,slice);
 
        int iPrintedRow=-1;
@@ -225,7 +254,7 @@ int AliHLTTPCDigitDumpComponent::DumpEvent( const AliHLTComponentEventData& evtD
          }
          if (iPrintedPad!=pReader->GetPad()) {
            iPrintedPad=pReader->GetPad();
-           dump << "Row: " << iPrintedRow << "  Pad: " << iPrintedPad << endl;
+           dump << "Row: " << iPrintedRow << "  Pad: " << iPrintedPad << "  HW address: " << pReader->GetAltroBlockHWaddr() << endl;
            iLastTime=-1;
          }
          if (iLastTime!=pReader->GetTime()+1 && iLastTime!=pReader->GetTime()-1 ) {
index 7f25fe2ed9ce9457f5d4dad814fc65df810f7771..2c833cfc158c9c5a918292a023885dc1fe62ff89 100644 (file)
  *      data mode of the <b>AliHLTTPCDigitReaderRaw</b> 
  * \li -digitreader    <i> reader   </i> <br>
  *      type of the digit reader: <i>unpacked, packed, raw</i> 
+ * \li -rcutrailersize    <i> size   </i> <br>
+ *      size of the RCU trailer in 32bit words (default 2)
+ * \li -unsorted <br>
+ *      unsorted mode of digit readers (default sorted)
+ * \li -sorted <br>
+ *      sorted mode of digit readers (default)
  *
  */
 class AliHLTTPCDigitDumpComponent : public AliHLTFileWriter {
@@ -84,6 +90,12 @@ class AliHLTTPCDigitDumpComponent : public AliHLTFileWriter {
   /** the digit reader to use */
   short fDigitReaderType; //!transient
 
+  /** size of the RCU trailer in 32bit words */
+  short fRcuTrailerSize; //! transient
+
+  /** unsorted/sorted mode of digit readers */
+  bool fUnsorted; //!transient
+
   ClassDef(AliHLTTPCDigitDumpComponent, 0);
 };
 
index a061621bf54076aaed12a8d4efc0dbca46694f97..798af0dc66b019839cb4a78187d1b4c49504d954 100644 (file)
@@ -180,6 +180,11 @@ int AliHLTTPCDigitReader::GetBunchSize()
   return 0;
 }
 
+AliHLTUInt32_t AliHLTTPCDigitReader::GetAltroBlockHWaddr() const
+{
+  return 0;
+}
+
 void AliHLTTPCDigitReader::PrintMissingFastAccessWarning()
 {
   // see header file for class documentation
index c1ce177a481d730d4e1771e438855fc932e68cb4..08f439d73da2fbebc35c36914c8d70fc3d2a01cb 100644 (file)
@@ -119,6 +119,11 @@ public:
    */
   virtual int NextBunch();
 
+  /**
+   * Get current hardware address.
+   */
+  virtual AliHLTUInt32_t GetAltroBlockHWaddr() const;
+
   /**
    * Get the row number of the current value.
    */
index ae118cc57bb19c01271e1ce2ec668572508cefb6..39ecafda307225bdc3b6a77f2a68748a7892331d 100644 (file)
@@ -113,8 +113,12 @@ Int_t AliHLTTPCDigitReaderPacked::InitBlock(void* ptr,ULong_t size, Int_t patch,
 
   fRawMemoryReader->SetEquipmentID(DDLid);
   //fRawMemoryReader->SetEquipmentID(1);
-  if(fOldRCUFormat)
+  if(fOldRCUFormat) {
     fTPCRawStream->SetOldRCUFormat(kTRUE);
+    HLTInfo("set old RCU format (1 trailer word: 40bit payload)");
+  }
+  fRawMemoryReader->RewindEvents();
+  fRawMemoryReader->NextEvent();
 
   if(!fUnsorted){
   //#if ENABLE_PAD_SORTING
@@ -238,6 +242,11 @@ int AliHLTTPCDigitReaderPacked::GetPad(){
   }
 }
 
+AliHLTUInt32_t AliHLTTPCDigitReaderPacked::GetAltroBlockHWaddr() const
+{
+  return fTPCRawStream->GetHWAddress();
+}
+
 Int_t AliHLTTPCDigitReaderPacked::GetSignal(){ 
   /*
     #if ENABLE_PAD_SORTING
index 4b9e846bd8c5ae77113929c331d57f1123223c02..b4d6e3a33a3bafcdecc28af1e18d67edd9d27f8b 100644 (file)
@@ -53,6 +53,7 @@ public:
   Int_t GetPad();
   Int_t GetSignal();
   Int_t GetTime();
+  AliHLTUInt32_t GetAltroBlockHWaddr() const;
     
 protected:
     
index 2612d80773842041e3afa59cddcfca72ddf71edc..03bedbce7fb55f165e2c7eea4a267915c85605af 100644 (file)
@@ -83,6 +83,10 @@ class AliHLTTPCCompModelDeconverter: public AliHLTLogging
       UInt_t fRemainingClustersModelDataSize;
 
     private:
+      /** copy constructor prohibited */
+      AliHLTTPCCompModelDeconverter(const AliHLTTPCCompModelDeconverter&);
+      /** assignment operator prohibited */
+      AliHLTTPCCompModelDeconverter& operator=(const AliHLTTPCCompModelDeconverter&);
 
        ClassDef(AliHLTTPCCompModelDeconverter, 1)