]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - MONITOR/root2date.cxx
Some bug fixes when not data is available for QA histos
[u/mrichter/AliRoot.git] / MONITOR / root2date.cxx
index e5eff0275d54b02973e840176279ecf116573826..dca2afa8d8d4e3b8f24fbd4083aec17f6420734f 100644 (file)
@@ -7,20 +7,30 @@
 
 #include "root2date.h"
 
-int Root2Date(AliRawEvent *gdcRootEvent, unsigned char *gdcDateEvent, char *ddlDir) {
+using std::ofstream;
+
+int Root2Date(AliRawVEvent *gdcRootEvent, unsigned char *gdcDateEvent, char *ddlDir) {
 
  unsigned char *p=gdcDateEvent;
  int ldcCounter, equipmentCounter, chunkSize;
- AliRawEquipment *aliEquipment=NULL;
+ AliRawVEquipment *aliEquipment=NULL;
  AliRawEquipmentHeader *aliEquipmentHeader=NULL;
  AliRawEventHeaderBase *aliHeader=NULL;
- AliRawEvent *ldcRootEvent=NULL;
+ AliRawVEvent *ldcRootEvent=NULL;
  
  aliHeader=gdcRootEvent->GetHeader();
+
+ char runNbFileName[256];
+ snprintf(runNbFileName,sizeof(runNbFileName),"%s/run%u",ddlDir,aliHeader->Get("RunNb"));
+ ofstream runNbFile(runNbFileName);
+ runNbFile.close();
+
  memcpy(p, aliHeader->HeaderBaseBegin(), chunkSize=aliHeader->HeaderBaseSize());
  p+=chunkSize;
  memcpy(p, aliHeader->HeaderBegin(), chunkSize=aliHeader->HeaderSize()); // Write DATE GDC header
  p+=chunkSize;
+ memcpy(p, aliHeader->GetExtendedData(), chunkSize=aliHeader->GetExtendedDataSize());
+ p+=chunkSize;
  for(ldcCounter=0; ldcCounter<gdcRootEvent->GetNSubEvents(); ldcCounter++) {
   ldcRootEvent=gdcRootEvent->GetSubEvent(ldcCounter);
   aliHeader=ldcRootEvent->GetHeader();
@@ -28,6 +38,8 @@ int Root2Date(AliRawEvent *gdcRootEvent, unsigned char *gdcDateEvent, char *ddlD
   p+=chunkSize;
   memcpy(p, aliHeader->HeaderBegin(), chunkSize=aliHeader->HeaderSize()); // Write DATE LDC header
   p+=chunkSize;
+  memcpy(p, aliHeader->GetExtendedData(), chunkSize=aliHeader->GetExtendedDataSize());
+  p+=chunkSize;
   for(equipmentCounter=0; equipmentCounter<ldcRootEvent->GetNEquipments(); equipmentCounter++) {
    aliEquipment=ldcRootEvent->GetEquipment(equipmentCounter);
    aliEquipmentHeader=aliEquipment->GetEquipmentHeader();
@@ -37,16 +49,16 @@ int Root2Date(AliRawEvent *gdcRootEvent, unsigned char *gdcDateEvent, char *ddlD
    }
    memcpy(p, aliEquipment->GetRawData()->GetBuffer(), chunkSize=aliEquipment->GetRawData()->GetSize()); // Write Equipment payload (including CDH)
    // Write ddl files if requested by the user
-   if (ddlDir) {
+   if (ddlDir && aliEquipmentHeader->GetEquipmentSize()) {
      Int_t ddlIndex;
      Int_t detId = AliDAQ::DetectorIDFromDdlID(aliEquipmentHeader->GetId(),ddlIndex);
      char ddlFileName[256];
-     sprintf(ddlFileName,"%s/%s",ddlDir,AliDAQ::DdlFileName(detId,ddlIndex));
+     snprintf(ddlFileName,sizeof(ddlFileName),"%s/%s",ddlDir,AliDAQ::DdlFileName(detId,ddlIndex));
      FILE *ddlFile;
-     if(ddlFile=fopen(ddlFileName, "wb")) {
+     if((ddlFile=fopen(ddlFileName, "wb"))) {
        fwrite(p, chunkSize, 1, ddlFile);
+       fclose(ddlFile);
      }
-     fclose(ddlFile);
    }
    p+=chunkSize;
   }