Changes for report #71958: ZDC: changes needs code update in STEER
authorhristov <hristov@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 31 Aug 2010 13:26:40 +0000 (13:26 +0000)
committerhristov <hristov@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 31 Aug 2010 13:26:40 +0000 (13:26 +0000)
The timing information provided by the ZDC TDCs has been demontrated to be very important when analyzing proton-proton data. Therefore we added this info (32 int) to the ESD.

Chiara

19 files changed:
STEER/AliESDEvent.h
STEER/AliESDZDC.cxx
STEER/AliESDZDC.h
ZDC/AliZDCChMap.cxx
ZDC/AliZDCChMap.h
ZDC/AliZDCPreprocessor.cxx
ZDC/AliZDCRawStream.cxx
ZDC/AliZDCRawStream.h
ZDC/AliZDCReco.cxx
ZDC/AliZDCReco.h
ZDC/AliZDCRecoParamPbPb.cxx
ZDC/AliZDCReconstructor.cxx
ZDC/AliZDCReconstructor.h
ZDC/ShuttleInput/ZDCChMapping.dat
ZDC/ZDCCALIBMBda.cxx
ZDC/ZDCEMDda.cxx
ZDC/ZDCLASERda.cxx
ZDC/ZDCMAPPINGda.cxx
ZDC/ZDCPEDESTALda.cxx

index 5cb7d84..7c88f24 100644 (file)
@@ -185,6 +185,7 @@ public:
   {if(fESDZDC) fESDZDC->SetZDC(n1Energy, p1Energy, em1Energy, em2Energy, n2Energy, p2Energy, 
             participants, nPartA, nPartC, b, bA, bC,  recoflag);}
   void     SetZDCScaler(UInt_t *counts) {if(fESDZDC) fESDZDC->SetZDCScaler(counts);}
+  void     SetZDCTDC(Int_t *values) {if(fESDZDC) fESDZDC->SetZDCTDC(values);}
 
 
   // FMD
index 492ea91..02f40e0 100644 (file)
@@ -53,7 +53,10 @@ AliESDZDC::AliESDZDC() :
   for(Int_t i=0; i<2; i++){
     fZNACentrCoord[i] = fZNCCentrCoord[i] = 0.;
   }
-  for(Int_t i=0; i<32; i++) fVMEScaler[i]=0;
+  for(Int_t i=0; i<32; i++){
+    fVMEScaler[i]=0;
+    fZDCTDCData[i]=0;
+  }
 }
 
 //______________________________________________________________________________
@@ -88,7 +91,10 @@ AliESDZDC::AliESDZDC(const AliESDZDC& zdc) :
     fZNACentrCoord[i] = zdc.fZNACentrCoord[i];
     fZNCCentrCoord[i] = zdc.fZNCCentrCoord[i];
   }
-  for(Int_t i=0; i<32; i++) fVMEScaler[i] = zdc.fVMEScaler[i];
+  for(Int_t i=0; i<32; i++){
+    fVMEScaler[i] = zdc.fVMEScaler[i];
+    fZDCTDCData[i] = zdc.fZDCTDCData[i];
+  }
 }
 
 //______________________________________________________________________________
@@ -127,7 +133,10 @@ AliESDZDC& AliESDZDC::operator=(const AliESDZDC&zdc)
     }
     //
     fESDQuality = zdc.fESDQuality;
-    for(Int_t i=0; i<32; i++) fVMEScaler[i] = zdc.fVMEScaler[i];
+    for(Int_t i=0; i<32; i++){
+      fVMEScaler[i] = zdc.fVMEScaler[i];
+      fZDCTDCData[i] = zdc.fZDCTDCData[i];
+    }
   } 
   return *this;
 }
@@ -173,7 +182,10 @@ void AliESDZDC::Reset()
        fZNACentrCoord[i] = fZNCCentrCoord[i] = 0.;
   }
   fESDQuality=0;
-  for(Int_t i=0; i<32; i++) fVMEScaler[i] = 0;
+  for(Int_t i=0; i<32; i++){
+     fVMEScaler[i] = 0;
+     fZDCTDCData[i] = 0;
+  }
 }
 
 //______________________________________________________________________________
@@ -185,8 +197,12 @@ void AliESDZDC::Print(const Option_t *) const
   fZDCN1Energy/1000.,fZDCP1Energy/1000.,fZDCN2Energy/1000.,fZDCP2Energy/1000.,
   fZDCEMEnergy+fZDCEMEnergy1, fZDCParticipants,fImpactParameter);
   //
-  printf(" ### fVMEScaler: \n");
-  for(Int_t i=0; i<32; i++) printf("\t datum %d: %d \n",i,fVMEScaler[i]);
+  printf(" ### VMEScaler (!=0): \n");
+  for(Int_t i=0; i<32; i++) if(fVMEScaler[i]!=0) printf("\t %d \n",fVMEScaler[i]);
+  printf("\n");
+  //
+  printf(" ### TDCData (!=0): \n");
+  for(Int_t i=0; i<32; i++) if(fZDCTDCData[i]!=0) printf("\t %d \n",fZDCTDCData[i]);
   printf("\n");
 }
 
index ae15493..b7e4642 100644 (file)
@@ -83,9 +83,15 @@ public:
 
   UInt_t GetZDCScaler(Int_t i)  const {return fVMEScaler[i];}
   const UInt_t* GetZDCScaler()  const {return fVMEScaler;}
+
+  Int_t GetZDCTDCData(Int_t i) const {return fZDCTDCData[i];}
+  const Int_t* GetZDCTDCData()  const {return fZDCTDCData;}
   
   void SetZDCScaler(const UInt_t count[32]) 
        {for(Int_t k=0; k<32; k++) fVMEScaler[k] = count[k];}
+  
+  void SetZDCTDC(const Int_t values[32]) 
+       {for(Int_t k=0; k<32; k++) fZDCTDCData[k] = values[k];}
 
   void    Reset();
   void    Print(const Option_t *opt=0) const;
@@ -115,10 +121,10 @@ private:
   Double32_t   fZNACentrCoord[2]; // Coordinates of the centroid over ZNC
   Double32_t   fZNCCentrCoord[2]; // Coordinates of the centroid over ZNA
   UInt_t       fESDQuality;      // flags from reconstruction
-  //
-  UInt_t fVMEScaler[32]; // counts from VME scaler
+  UInt_t fVMEScaler[32];         // counts from VME scaler
+  Int_t  fZDCTDCData[32];        // ZDC TDC data
 
-  ClassDef(AliESDZDC,12)
+  ClassDef(AliESDZDC,13)
 };
 
 #endif
index 2cb327c..bdbf94d 100644 (file)
@@ -52,11 +52,16 @@ TNamed()
     fADCChannel[i] = -1;
     fDetector[i] = -1;
     fSector[i] = -1;
+    fADCSignalCode[i] = -1;
   }
   for(Int_t i=0; i<kNScChannels; i++){
     fScalerChannel[i] = -1;
     fScDetector[i] = -1;
     fScSector[i] = -1;
+    fScSignalCode[i] = -1;
+    //
+    fTDCChannel[i] = -1;
+    fTDCSignalCode[i] = -1;
   }
   
   
@@ -81,10 +86,15 @@ AliZDCChMap::AliZDCChMap(const AliZDCChMap& calibda) :
      fADCChannel[t] = calibda.GetADCChannel(t);
      fDetector[t]   = calibda.GetDetector(t);
      fSector[t]     = calibda.GetSector(t);
+     fADCSignalCode[t]  = calibda.GetADCSignalCode(t);
      if(t<kNScChannels){
        fScalerChannel[t] = calibda.GetScChannel(t);
        fScDetector[t]    = calibda.GetScDetector(t);
        fScSector[t]      = calibda.GetScSector(t);
+       fScSignalCode[t]  = calibda.GetScSignalCode(t);
+       //
+       fTDCChannel[t] = calibda.GetTDCChannel(t);
+       fTDCSignalCode[t] = calibda.GetTDCChannel(t);
      }
   }
 }
@@ -107,10 +117,15 @@ AliZDCChMap &AliZDCChMap::operator =(const AliZDCChMap& calibda)
      fADCChannel[t] = calibda.GetADCChannel(t);
      fDetector[t]   = calibda.GetDetector(t);
      fSector[t]     = calibda.GetSector(t);
+     fADCSignalCode[t]  = calibda.GetADCSignalCode(t);
      if(t<kNScChannels){
        fScalerChannel[t] = calibda.GetScChannel(t);
        fScDetector[t]    = calibda.GetScDetector(t);
        fScSector[t]      = calibda.GetScSector(t);
+       fScSignalCode[t]  = calibda.GetScSignalCode(t);
+       //
+       fTDCChannel[t] = calibda.GetTDCChannel(t);
+       fTDCSignalCode[t] = calibda.GetTDCChannel(t);
      }
   }
 
@@ -130,9 +145,13 @@ void AliZDCChMap::Reset()
   memset(fADCChannel,0,48*sizeof(Int_t));
   memset(fDetector,0,48*sizeof(Int_t));
   memset(fSector,0,48*sizeof(Int_t));
+  memset(fADCSignalCode,0,48*sizeof(Int_t));
   memset(fScalerChannel,0,32*sizeof(Int_t));
   memset(fScDetector,0,32*sizeof(Int_t));
   memset(fScSector,0,32*sizeof(Int_t));
+  memset(fScSignalCode,0,32*sizeof(Int_t));
+  memset(fTDCChannel,0,32*sizeof(Int_t));
+  memset(fTDCSignalCode,0,32*sizeof(Int_t));
 }                                                                                       
 
 
@@ -141,17 +160,24 @@ void  AliZDCChMap::Print(Option_t *) const
 {
    // Printing of calibration object
    printf("\n\n\t ******************* AliZDCChMap object *******************\n\n");
-   for(Int_t i=0; i<9; i++){
+   for(Int_t i=0; i<10; i++){
      printf("  ******** GEO %d mod. type %d #ch. %d\n",
       fModuleMap[i][0],fModuleMap[i][1],fModuleMap[i][2]);     
    } 
+   printf("\n");
    for(Int_t i=0; i<48; i++) 
-     printf(" ADC - mod. %d ch. %d -> detector %d sector %d\n",
-      fADCModule[i], fADCChannel[i],fDetector[i], fSector[i]);
-   for(Int_t i=0; i<32; i++) 
+     printf(" ADC - mod. %d ch. %d signal %d -> detector %d sector %d\n",
+      fADCModule[i], fADCChannel[i], fADCSignalCode[i], fDetector[i], fSector[i]);
+   printf("\n");
+   for(Int_t i=0; i<32; i++)
      if(fScalerChannel[i]!=-1)
-       printf(" SCALER - ch. %d -> detector %d sector %d\n",
-        fScalerChannel[i],fScDetector[i], fScSector[i]);
-   printf("\n\n\t **********************************************************\n\n");
+       printf(" SCALER - ch. %d signal %d\n",
+        fScalerChannel[i], fScSignalCode[i]);
+   printf("\n");
+   for(Int_t i=0; i<32; i++) 
+     if(fTDCChannel[i]!=-1)
+       printf(" TDC - ch. %d signal %d\n",
+        fTDCChannel[i], fTDCSignalCode[i]);
+   printf("\n\t **********************************************************\n\n");
  
 } 
index cf88289..41b0fa9 100644 (file)
@@ -34,10 +34,15 @@ class AliZDCChMap: public TNamed {
   Int_t GetADCChannel(Int_t i) const {return fADCChannel[i];}
   Int_t GetDetector(Int_t i)   const {return fDetector[i];}
   Int_t GetSector(Int_t i)     const {return fSector[i];}
+  Int_t GetADCSignalCode(Int_t i) const {return fADCSignalCode[i];}
   //
-  Int_t GetScChannel(Int_t i)  const {return fScalerChannel[i];}
-  Int_t GetScDetector(Int_t i) const {return fScDetector[i];}
-  Int_t GetScSector(Int_t i)   const {return fScSector[i];}
+  Int_t GetScChannel(Int_t i)    const {return fScalerChannel[i];}
+  Int_t GetScDetector(Int_t i)   const {return fScDetector[i];}
+  Int_t GetScSector(Int_t i)     const {return fScSector[i];}
+  Int_t GetScSignalCode(Int_t i) const {return fSector[i];}
+  //
+  Int_t GetTDCChannel(Int_t i)    const {return fTDCChannel[i];}
+  Int_t GetTDCSignalCode(Int_t i) const {return fTDCSignalCode[i];}
   
   void  SetModuleMap(Int_t iEntry, Int_t iGeoAdd, Int_t iModType, Int_t iNCh)
         {fModuleMap[iEntry][0] = iGeoAdd;
@@ -48,10 +53,15 @@ class AliZDCChMap: public TNamed {
   void  SetADCChannel(Int_t i, Int_t ich) {fADCChannel[i] = ich;}
   void  SetDetector(Int_t i, Int_t ival)  {fDetector[i] = ival;}
   void  SetSector(Int_t i, Int_t ival)    {fSector[i] = ival;}
+  void  SetADCSignalCode(Int_t i, Int_t ival) {fADCSignalCode[i] = ival;}
+  //
+  void  SetScChannel(Int_t i, Int_t ich)     {fScalerChannel[i] = ich;}
+  void  SetScDetector(Int_t i, Int_t ival)   {fScDetector[i] = ival;}
+  void  SetScSector(Int_t i, Int_t ival)     {fScSector[i] = ival;}
+  void  SetScSignalCode(Int_t i, Int_t ival) {fScSignalCode[i] = ival;}
   //
-  void  SetScChannel(Int_t i, Int_t ich)   {fScalerChannel[i] = ich;}
-  void  SetScDetector(Int_t i, Int_t ival) {fScDetector[i] = ival;}
-  void  SetScSector(Int_t i, Int_t ival)   {fScSector[i] = ival;}
+  void  SetTDCChannel(Int_t i, Int_t ich)     {fTDCChannel[i] = ich;}
+  void  SetTDCSignalCode(Int_t i, Int_t ival) {fTDCSignalCode[i] = ival;}
   
  protected:
   Int_t  fModuleMap[10][3]; // 10 module maps: GEO, mod. type, no. ch.
@@ -63,13 +73,19 @@ class AliZDCChMap: public TNamed {
   Int_t  fADCChannel[48];    // ADC channel
   Int_t  fDetector[48];      // detector
   Int_t  fSector[48];        // sector
+  Int_t  fADCSignalCode[48]; // ADC signal code
   //
   // ************ VME scaler ************
   Int_t  fScalerChannel[32]; // Scaler channel
   Int_t  fScDetector[32];    // detector
   Int_t  fScSector[32];             // sector
+  Int_t  fScSignalCode[32];  // scaler signal code
+  //
+  // ************ ZDC TDC ************
+  Int_t  fTDCChannel[32];    // TDC channel
+  Int_t  fTDCSignalCode[32]; // TDC signal code
   
-  ClassDef(AliZDCChMap,3)    // ZDC pedestal calibration data
+  ClassDef(AliZDCChMap,4)    // ZDC pedestal calibration data
 };
 
 #endif
index 651ff55..a4a5d30 100644 (file)
@@ -190,7 +190,7 @@ UInt_t AliZDCPreprocessor::ProcessDCSData(TMap* dcsAliasMap)
 //______________________________________________________________________________________________
 UInt_t AliZDCPreprocessor::ProcessChMap()
 { 
-  const int kNModules=10, kNch=48, kNScch=32;
+  const int kNModules=10, kNch=48, kNScch=32, kNtdcch=32;
   
   // Reading the file for mapping from FXS
   TList* daqSource = GetFileSources(kDAQ, "MAPPING");
@@ -204,7 +204,7 @@ UInt_t AliZDCPreprocessor::ProcessChMap()
   TIter iter(daqSource);
   TObjString* source = 0;
   Int_t isou = 0;
-  Int_t modMap[kNModules][3], adcMap[kNch][6], scMap[kNScch][6]; 
+  Int_t modMap[kNModules][3], adcMap[kNch][6], scMap[kNScch][6], tdcMap[kNtdcch][4]; 
   //
   while((source = dynamic_cast<TObjString*> (iter.Next()))){
      TString fileName = GetFile(kDAQ, "MAPPING", source->GetName());
@@ -236,9 +236,15 @@ UInt_t AliZDCPreprocessor::ProcessChMap()
             if(read == 0) AliDebug(3," Failing in reading data from mapping file");
            }
        }
-       for(Int_t j=kNch+kNScch; j<kNModules+kNch+kNScch; j++){   
+       for(Int_t j=kNch+kNScch; j<kNch+kNScch+kNtdcch; j++){     
+           for(Int_t k=0; k<4; k++){
+             int read = fscanf(file,"%d",&tdcMap[j-kNch-kNScch][k]);
+            if(read == 0) AliDebug(3," Failing in reading data from mapping file");
+           }
+       }
+       for(Int_t j=kNch+kNScch+kNtdcch; j<kNch+kNScch+kNtdcch+kNModules; j++){   
            for(Int_t k=0; k<3; k++){
-             int read = fscanf(file,"%d",&modMap[j-kNch-kNScch][k]);
+             int read = fscanf(file,"%d",&modMap[j-kNch-kNScch-kNtdcch][k]);
             if(read == 0) AliDebug(3," Failing in reading data from mapping file");
            }
        }
@@ -252,7 +258,7 @@ UInt_t AliZDCPreprocessor::ProcessChMap()
   
   // Store the currently read map ONLY IF it is different
   // from the entry in the OCDB
-  Bool_t adcMapUpdated=kFALSE, scMapUpdated=kFALSE;
+  Bool_t adcMapUpdated=kFALSE, scMapUpdated=kFALSE, tdcMapUpdated=kFALSE;
   Bool_t updateOCDB = kFALSE;
   
   AliCDBEntry *cdbEntry = GetFromOCDB("Calib","ChMap");
@@ -271,12 +277,18 @@ UInt_t AliZDCPreprocessor::ProcessChMap()
     }
     for(Int_t i=0; i<kNScch; i++){
       if(  (scMap[i][2] != chMap->GetScChannel(i)) 
+       || (scMap[i][3] != chMap->GetScSignalCode(i)) 
        || (scMap[i][4] != chMap->GetScDetector(i)) 
        || (scMap[i][5] != chMap->GetScSector(i)))
         scMapUpdated = kTRUE;
     }
+    for(Int_t i=0; i<kNtdcch; i++){
+      if(  (tdcMap[i][2] != chMap->GetTDCChannel(i)) 
+       || (tdcMap[i][3] != chMap->GetTDCSignalCode(i)))
+        tdcMapUpdated = kTRUE;
+    }
   }
-  if(adcMapUpdated || scMapUpdated) updateOCDB = kTRUE;
+  if(adcMapUpdated || scMapUpdated || tdcMapUpdated) updateOCDB = kTRUE;
   //
   Bool_t resChMapStore = kTRUE;
   if(updateOCDB==kTRUE){
@@ -291,21 +303,27 @@ UInt_t AliZDCPreprocessor::ProcessChMap()
     for(Int_t k=0; k<kNch; k++){
       mapCalib->SetADCModule(k,adcMap[k][1]);
       mapCalib->SetADCChannel(k,adcMap[k][2]);
+      mapCalib->SetADCSignalCode(k,adcMap[k][3]);
       mapCalib->SetDetector(k,adcMap[k][4]);
       mapCalib->SetSector(k,adcMap[k][5]);
     }
     for(Int_t k=0; k<kNScch; k++){
        mapCalib->SetScChannel(k, scMap[k][2]);
+       mapCalib->SetScSignalCode(k, scMap[k][3]);
        mapCalib->SetScDetector(k, scMap[k][4]);
        mapCalib->SetScSector(k, scMap[k][5]);
     }
+    for(Int_t k=0; k<kNtdcch; k++){
+       mapCalib->SetTDCChannel(k, tdcMap[k][2]);
+       mapCalib->SetTDCSignalCode(k, tdcMap[k][3]);
+    }
     //
     mapCalib->Print("");
     // 
     AliCDBMetaData metaData;
     metaData.SetBeamPeriod(0);
     metaData.SetResponsible("Chiara Oppedisano");
-    metaData.SetComment("Filling AliZDCChMap object");  
+    metaData.SetComment("AliZDCChMap object created by ZDC preprocessor");  
     //
     resChMapStore = Store("Calib","ChMap",mapCalib, &metaData, 0, kTRUE);
     printf("  Mapping object stored in OCDB\n");
index c0d2a87..e2cc383 100644 (file)
@@ -100,6 +100,7 @@ AliZDCRawStream::AliZDCRawStream(AliRawReader* rawReader) :
   fCurrentCh(-1),
   fCabledSignal(-1),
   fCurrScCh(-1),
+  fCurrTDCCh(-1),
   fIsADCEventGood(kTRUE),
   fIsL0BitSet(kTRUE),
   fIsPileUpEvent(kFALSE),
@@ -122,7 +123,10 @@ AliZDCRawStream::AliZDCRawStream(AliRawReader* rawReader) :
   for(Int_t i=0; i<kNch; i++){
     for(Int_t j=0; j<5; j++){
       fMapADC[i][j]=-1;
-      if(i<32) fScalerMap[i][j]=-1;
+      if(i<32){
+        fScalerMap[i][j]=-1;
+        if(j<3) fTDCMap[i][j]=-1;
+      }
     }
   }
   
@@ -195,6 +199,7 @@ AliZDCRawStream::AliZDCRawStream(const AliZDCRawStream& stream) :
   fCurrentCh(stream.fCurrentCh),
   fCabledSignal(stream.GetCabledSignal()),
   fCurrScCh(stream.fCurrScCh),
+  fCurrTDCCh(stream.fCurrTDCCh),
   fIsADCEventGood(stream.fIsADCEventGood),
   fIsL0BitSet(stream.fIsL0BitSet),
   fIsPileUpEvent(stream.fIsPileUpEvent),
@@ -385,7 +390,7 @@ Bool_t AliZDCRawStream::Next()
     //if(fEvType==7 || fEvType ==8){ //Physics or calibration event
       ReadCDHHeader();
     //}
-    fCurrentCh=0; fCurrScCh=0; fNChannelsOn=0;
+    fCurrentCh=0; fCurrScCh=0;  fCurrTDCCh=0;fNChannelsOn=0;
     // Ch. debug
     //printf("\n  AliZDCRawStream::Next() - ev. type %d",fEvType);
   }
@@ -431,7 +436,7 @@ Bool_t AliZDCRawStream::Next()
         // DARC 1st datum @ fDataOffset+1 \ ZRC 1st valid datum @ fDataOffset=0
         if((fPosition==fDataOffset+1) || (fPosition==fDataOffset)){ 
           printf("\n\n ------ AliZDCRawStream -> Reading mapping from StartOfData event ------\n");
-          fCurrentCh=0; fCurrScCh=0;   
+          fCurrentCh=0; fCurrScCh=0; fCurrTDCCh=0;     
         }
        else{
          printf(" ------ AliZDCRawStream -> End of ZDC StartOfData event ------\n\n");
@@ -584,12 +589,22 @@ Bool_t AliZDCRawStream::Next()
            else if(fCabledSignal==kZEM2 || fCabledSignal==kZEM2D) fScalerMap[fCurrScCh][4]=2;
          }
          // Ch debug.
-         //printf("\t VME scaler mod. %d ch. %d, signal %d",fScalerMap[fCurrScCh][0],fADCChannel,fCabledSignal);
-         //if(fCabledSignal!=0 && fCabledSignal!=1) printf("  det. %d sec. %d\n",fScalerMap[fCurrScCh][3],fScalerMap[fCurrScCh][4]);
-         //else printf("  Signal void/not connected\n");
+         printf("\t VME scaler mod. %d ch. %d, signal %d",fScalerMap[fCurrScCh][0],fADCChannel,fCabledSignal);
+         if(fCabledSignal!=0 && fCabledSignal!=1) printf("  det. %d sec. %d\n",fScalerMap[fCurrScCh][3],fScalerMap[fCurrScCh][4]);
+         else printf("  Signal void/not connected\n");
          
           fCurrScCh++;
         }
+       else if(fModType==KV1290 && fADCModule==kZDCTDCGeo){  // ******** ZDC TDC **************************
+          fIsChMapping = kTRUE;
+         fTDCMap[fCurrTDCCh][0] = fADCModule;
+         fTDCMap[fCurrTDCCh][1] = fADCChannel;
+         fTDCMap[fCurrTDCCh][2] = fCabledSignal;
+          
+         fCurrTDCCh++;
+         
+         printf("\tZDC TDC: mod. %d ch. %d, signal %d\n",fADCModule,fADCChannel,fCabledSignal);          
+        }
        /*else if(fModType == kTRG){ // **** scalers from trigger card
          //printf("\t Trigger scaler mod. %d ch. %d, signal %d\n",fADCModule,fADCChannel,fCabledSignal);         
         }
@@ -793,7 +808,7 @@ Bool_t AliZDCRawStream::Next()
         //Ch. debug
         //printf("  AliZDCRawStream -> ZDC TDC: mod.%d\n",fADCModule);
       }
-      else if (fADCModule==kADDTDCGeo){ // *** ADD TDC
+      else if(fADCModule==kADDTDCGeo){ // *** ADD TDC
         fIsADDTDCHeader = kTRUE;
         //Ch. debug
         //printf("  AliZDCRawStream -> ADD TDC: mod.%d\n",fADCModule);
index 6450205..de66564 100644 (file)
@@ -129,6 +129,10 @@ class AliZDCRawStream: public TObject {
     Int_t  GetScalerSignFromMap(Int_t i) const {return fScalerMap[i][2];}
     Int_t  GetScDetectorFromMap(Int_t i) const {return fScalerMap[i][3];}
     Int_t  GetScTowerFromMap(Int_t i)    const {return fScalerMap[i][4];}
+    //  TDC map
+    Int_t  GetTDCModFromMap(Int_t i)  const {return fTDCMap[i][0];}
+    Int_t  GetTDCChFromMap(Int_t i)   const {return fTDCMap[i][1];}
+    Int_t  GetTDCSignFromMap(Int_t i) const {return fTDCMap[i][2];}
     
     Bool_t IsCalibration()   const {return fIsCalib;}
     Bool_t IsDARCHeader()    const {return fIsDARCHeader;}
@@ -263,6 +267,8 @@ class AliZDCRawStream: public TObject {
     Int_t fMapADC[48][5];    // ADC map {ADC mod., ch., signal, det., sec.}
     Int_t fCurrScCh;        // current mapped scaler ch.
     Int_t fScalerMap[32][5]; // Scaler map {Scaler mod., ch., signal, det., sec.}
+    Int_t fCurrTDCCh;       // current mapped TDC ch.
+    Int_t fTDCMap[32][3];    // TDC map {Scaler mod., ch., signal}
     
     // Checks over raw data event quality
     Bool_t fIsADCEventGood; // true if not valid datum not corrupted
index 5abb4f3..0e2548d 100644 (file)
@@ -61,7 +61,7 @@ AliZDCReco::AliZDCReco() :
      }
   }
   
-  for(Int_t i=0; i<32; i++) fZDCScaler[i]=0;
+  for(Int_t i=0; i<32; i++) fZDCScaler[i] = fZDCTDCData[i] = 0;
 }
   
 
@@ -75,7 +75,7 @@ AliZDCReco::AliZDCReco(
      Int_t trsp, Int_t trspSideA,Int_t trspSideC,
      Int_t npart, Int_t npartSideA, Int_t npartSideC, 
      Float_t b, Float_t bSideA, Float_t bSideC,
-     UInt_t recoFlag, Bool_t scalerOn, UInt_t* scaler) :
+     UInt_t recoFlag, Bool_t scalerOn, UInt_t* scaler, Int_t* tdcData) :
        
   TObject(),
   //
@@ -114,8 +114,10 @@ AliZDCReco::AliZDCReco(
        fPMRef2[j] = ref2[j];
      }
   }
-  for(Int_t j=0; j<32; j++) fZDCScaler[j] = scaler[j];
-  
+  for(Int_t j=0; j<32; j++){
+    fZDCScaler[j] = scaler[j];
+    fZDCTDCData[j] = tdcData[j];
+  }
 }
 
 //______________________________________________________________________________
@@ -167,7 +169,10 @@ fIsScalerOn(oldreco.IsScalerOn())
   fPMRef1[1] = oldreco.GetPMRef1LRsignal();
   fPMRef2[0] = oldreco.GetPMRef2HRsignal();
   fPMRef2[1] = oldreco.GetPMRef2LRsignal();
-  for(Int_t j=0; j<32; j++) fZDCScaler[j] = oldreco.GetZDCScaler(j);
+  for(Int_t j=0; j<32; j++){
+    fZDCScaler[j] = oldreco.GetZDCScaler(j);
+    fZDCTDCData[j] = oldreco.GetZDCTDCData(j);
+  }
 }
 
 //______________________________________________________________________________
index db0957b..55bd4ab 100644 (file)
@@ -22,7 +22,7 @@ public:
             Int_t trsp, Int_t trspSideA, Int_t trspSideC,
             Int_t npart, Int_t npartSideA, Int_t npartSideC, 
             Float_t b, Float_t bSideA, Float_t bSideC,
-            UInt_t recoFlag, Bool_t scalerOn, UInt_t* scaler);
+            UInt_t recoFlag, Bool_t scalerOn, UInt_t* scaler, Int_t *tdcData);
 
   AliZDCReco(const AliZDCReco &oldreco);
   virtual ~AliZDCReco() {}
@@ -80,6 +80,8 @@ public:
   //
   virtual Bool_t  IsScalerOn()          const {return fIsScalerOn;}
   virtual UInt_t  GetZDCScaler(Int_t k) const {return fZDCScaler[k];}
+  //
+  virtual Int_t   GetZDCTDCData(Int_t j) const {return fZDCTDCData[j];}
 
   // Print method
   virtual void Print(Option_t *) const;
@@ -119,8 +121,10 @@ private:
   UInt_t  fRecoFlag;       // Reconstruction flag
   Bool_t  fIsScalerOn;     // True if scaler has been read in the event
   UInt_t  fZDCScaler[32];  // Counts from ZDC VME scaler
+  //
+  Int_t   fZDCTDCData[32]; // TDC data
 
-  ClassDef(AliZDCReco,8)  // RecPoints for the Zero Degree Calorimeters
+  ClassDef(AliZDCReco,9)  // RecPoints for the Zero Degree Calorimeters
 };
  
 #endif
index d023d1f..f41a157 100644 (file)
@@ -138,7 +138,7 @@ AliZDCRecoParamPbPb *AliZDCRecoParamPbPb::GetHighFluxParam(Float_t beamEnergy)
   TFile *fileGlauberMC =  TFile::Open("$ALICE_ROOT/ZDC/GlauberMCDist.root");
   if(!fileGlauberMC) printf(" AliZDCRecoParamPbPb::GetHighFluxParam() ERROR opening file $ALICE_ROOT/ZDC/SpectatorSignal.root\n");
   
-  TH1D *hNpartDist, *hbDist;
+  TH1D *hNpartDist=0x0, *hbDist=0x0;
   if(TMath::Abs(beamEnergy-5500)<100.){
     fileGlauberMC->cd("energy5500");
     fileGlauberMC->GetObject("energy5500/hNpartGlauber;1", hNpartDist);
index 86b5266..34c1d6c 100644 (file)
@@ -257,7 +257,11 @@ void AliZDCReconstructor::Reconstruct(TTree* digitsTree, TTree* clustersTree) co
   }//digits loop
  
   UInt_t counts[32];
-  for(Int_t jj=0; jj<32; jj++) counts[jj]=0;
+  Int_t  tdc[32];
+  for(Int_t jj=0; jj<32; jj++){
+    counts[jj]=0;
+    tdc[jj]=0;
+  }
   
   Int_t  evQualityBlock[4] = {1,0,0,0};
   Int_t  triggerBlock[4] = {0,0,0,0};
@@ -268,12 +272,12 @@ void AliZDCReconstructor::Reconstruct(TTree* digitsTree, TTree* clustersTree) co
   if(fRecoMode==1)
     ReconstructEventpp(clustersTree, tZN1Corr, tZP1Corr, tZN2Corr, tZP2Corr, 
       dZEM1Corr, dZEM2Corr, sPMRef1, sPMRef2, 
-      kFALSE, counts, 
+      kFALSE, counts, tdc,
       evQualityBlock,  triggerBlock,  chBlock, puBits);
   else if(fRecoMode==2)
     ReconstructEventPbPb(clustersTree, tZN1Corr, tZP1Corr, tZN2Corr, tZP2Corr, 
       dZEM1Corr, dZEM2Corr, sPMRef1, sPMRef2, 
-      kFALSE, counts, 
+      kFALSE, counts, tdc,
       evQualityBlock,  triggerBlock,  chBlock, puBits);    
 }
 
@@ -320,9 +324,13 @@ void AliZDCReconstructor::Reconstruct(AliRawReader* rawReader, TTree* clustersTr
   }  
 
   Bool_t isScalerOn=kFALSE;
-  Int_t jsc=0;
-  UInt_t scalerData[32];       
-  for(Int_t k=0; k<32; k++) scalerData[k]=0;
+  Int_t jsc=0, itdc=0;
+  UInt_t scalerData[32];
+  Int_t tdcData[32];   
+  for(Int_t k=0; k<32; k++){
+    scalerData[k]=0;
+    tdcData[k]=0;
+  }
   
   Int_t  evQualityBlock[4] = {1,0,0,0};
   Int_t  triggerBlock[4] = {0,0,0,0};
@@ -330,7 +338,7 @@ void AliZDCReconstructor::Reconstruct(AliRawReader* rawReader, TTree* clustersTr
   UInt_t puBits=0;
 
   //fNRun = (Int_t) rawReader->GetRunNumber();
-  Int_t kFirstADCGeo=0, kLastADCGeo=3, kScalerGeo=8, kPUGeo=29;
+  Int_t kFirstADCGeo=0, kLastADCGeo=3, kScalerGeo=8, kZDCTDCGeo=4, kPUGeo=29;
   //Int_t kTrigScales=30, kTrigHistory=31;
 
   // loop over raw data
@@ -490,6 +498,14 @@ void AliZDCReconstructor::Reconstruct(AliRawReader* rawReader, TTree* clustersTr
        jsc++;
      }
    }// VME SCALER DATA
+   // ***************************** Reading ZDC TDC
+   else if(rawData.GetADCModule()==kZDCTDCGeo && rawData.IsZDCTDCDatum()==kTRUE){
+       tdcData[itdc] = rawData.GetZDCTDCDatum();
+       // Ch. debug
+       //printf("   Reconstructed VME Scaler: %d %d  ",jsc,scalerData[jsc]);
+       //
+       itdc++;
+   }// ZDC TDC DATA
    // ***************************** Reading PU
    else if(rawData.GetADCModule()==kPUGeo){
      puBits = rawData.GetDetectorPattern();
@@ -564,12 +580,12 @@ void AliZDCReconstructor::Reconstruct(AliRawReader* rawReader, TTree* clustersTr
   if(fRecoMode==1) // p-p data
     ReconstructEventpp(clustersTree, tZN1Corr, tZP1Corr, tZN2Corr, tZP2Corr, 
       dZEM1Corr, dZEM2Corr, sPMRef1, sPMRef2, 
-      isScalerOn, scalerData, 
+      isScalerOn, scalerData, tdcData,
       evQualityBlock, triggerBlock, chBlock, puBits);
   else if(fRecoMode==2) // Pb-Pb data
       ReconstructEventPbPb(clustersTree, tZN1Corr, tZP1Corr, tZN2Corr, tZP2Corr, 
       dZEM1Corr, dZEM2Corr, sPMRef1, sPMRef2, 
-      isScalerOn, scalerData, 
+      isScalerOn, scalerData,  tdcData,
       evQualityBlock, triggerBlock, chBlock, puBits);
 }
 
@@ -579,8 +595,8 @@ void AliZDCReconstructor::ReconstructEventpp(TTree *clustersTree,
        const Float_t* const corrADCZN2, const Float_t* const corrADCZP2,
        const Float_t* const corrADCZEM1, const Float_t* const corrADCZEM2,
        Float_t* sPMRef1, Float_t* sPMRef2, Bool_t isScalerOn, UInt_t* scaler, 
-       const Int_t* const evQualityBlock, const Int_t* const triggerBlock, 
-       const Int_t* const chBlock, UInt_t puBits) const
+       Int_t* tdcData, const Int_t* const evQualityBlock, 
+       const Int_t* const triggerBlock, const Int_t* const chBlock, UInt_t puBits) const
 {
   // ****************** Reconstruct one event ******************
   
@@ -760,7 +776,7 @@ void AliZDCReconstructor::ReconstructEventpp(TTree *clustersTree,
                   nGenSpec, nGenSpecLeft, nGenSpecRight, 
                   nPart, nPartTotLeft, nPartTotRight, 
                   impPar, impPar1, impPar2,
-                  recoFlag, isScalerOn, scaler);
+                  recoFlag, isScalerOn, scaler, tdcData);
                  
   const Int_t kBufferSize = 4000;
   clustersTree->Branch("ZDC", "AliZDCReco", &reco, kBufferSize);
@@ -774,8 +790,8 @@ void AliZDCReconstructor::ReconstructEventPbPb(TTree *clustersTree,
        const Float_t* const corrADCZN2, const Float_t* const corrADCZP2,
        const Float_t* const corrADCZEM1, const Float_t* const corrADCZEM2,
        Float_t* sPMRef1, Float_t* sPMRef2, Bool_t isScalerOn, UInt_t* scaler, 
-       const Int_t* const evQualityBlock, const Int_t* const triggerBlock, 
-       const Int_t* const chBlock, UInt_t puBits) const
+       Int_t* tdcData, const Int_t* const evQualityBlock, 
+       const Int_t* const triggerBlock, const Int_t* const chBlock, UInt_t puBits) const
 {
   // ****************** Reconstruct one event ******************
   // ---------------------- Setting reco flags for ESD
@@ -1185,7 +1201,7 @@ void AliZDCReconstructor::ReconstructEventPbPb(TTree *clustersTree,
                  nDetSpecNLeft, nDetSpecPLeft, nDetSpecNRight, nDetSpecPRight, 
                  nGenSpec, nGenSpecA, nGenSpecC, 
                  nPart, nPartA, nPartC, b, bA, bC,
-                 recoFlag, isScalerOn, scaler);
+                 recoFlag, isScalerOn, scaler, tdcData);
                    
   const Int_t kBufferSize = 4000;
   clustersTree->Branch("ZDC", "AliZDCReco", &reco, kBufferSize);
@@ -1250,6 +1266,11 @@ void AliZDCReconstructor::FillZDCintoESD(TTree *clustersTree, AliESDEvent* esd)
     for(Int_t jk=0; jk<32; jk++) counts[jk] = reco.GetZDCScaler(jk);
     esd->SetZDCScaler(counts);
   }
+  
+  // Writing TDC data into ZDC ESDs
+  Int_t tdcValues[32];
+  for(Int_t jk=0; jk<32; jk++) tdcValues[jk] = reco.GetZDCTDCData(jk);
+  esd->SetZDCTDC(tdcValues);
 }
 
 //_____________________________________________________________________________
index 66a414f..1980251 100644 (file)
@@ -75,15 +75,15 @@ private:
         const Float_t* const corrADCZN2, const Float_t* const corrADCZP2,
         const Float_t* const corrADCZEM1, const Float_t* const corrADCZEM2,
         Float_t* sPMRef1, Float_t* sPMRef2, Bool_t isScalerOn, UInt_t* scaler, 
-        const Int_t* const evQualityBlock, const Int_t* const triggerBlock, 
-        const Int_t* const chBlock, UInt_t puBits) const;
+        Int_t* tdcData, const Int_t* const evQualityBlock, 
+        const Int_t* const triggerBlock, const Int_t* const chBlock, UInt_t puBits) const;
   void   ReconstructEventPbPb(TTree *clustersTree, 
         const Float_t* const corrADCZN1, const Float_t* const corrADCZP1, 
         const Float_t* const corrADCZN2, const Float_t* const corrADCZP2,
         const Float_t* const corrADCZEM1, const Float_t* const corrADCZEM2,
         Float_t* sPMRef1, Float_t* sPMRef2, Bool_t isScalerOn, UInt_t* scaler, 
-        const Int_t* const evQualityBlock, const Int_t* const triggerBlock, 
-        const Int_t* const chBlock, UInt_t puBits) const;
+        Int_t* tdcData, const Int_t* const evQualityBlock, 
+        const Int_t* const triggerBlock, const Int_t* const chBlock, UInt_t puBits) const;
   
   void   FillZDCintoESD(TTree *clustersTree, AliESDEvent*esd) const;
 
index 4891c6f..84960d1 100644 (file)
        21      16      21      89      -1      -1
        22      16      22      101     -1      -1
        23      16      23      102     -1      -1
-       24      0       0       0       0       0
-       25      0       0       0       0       0
-       26      0       0       0       0       0
-       27      0       0       0       0       0
-       28      0       0       0       0       0
-       29      0       0       0       0       0
-       30      0       0       0       0       0
-       31      0       0       0       0       0
+       24      -1      -1      -1      -1      -1
+       25      -1      -1      -1      -1      -1
+       26      -1      -1      -1      -1      -1
+       27      -1      -1      -1      -1      -1
+       28      -1      -1      -1      -1      -1
+       29      -1      -1      -1      -1      -1
+       30      -1      -1      -1      -1      -1
+       31      -1      -1      -1      -1      -1
+       0       4       0       92
+       1       4       1       71
+       2       4       2       93
+       3       4       3       76
+       4       4       4       90
+       5       4       5       61
+       6       4       6       91
+       7       4       7       66
+       8       4       8       81
+       9       4       9       82
+       10      4       10      87
+       11      4       11      88
+       12      4       12      85
+       13      4       13      86
+       14      4       14      94
+       15      4       15      95
+       16      4       16      135
+       17      -1      -1      -1
+       18      -1      -1      -1
+       19      -1      -1      -1
+       20      -1      -1      -1
+       21      -1      -1      -1
+       22      -1      -1      -1
+       23      -1      -1      -1
+       24      -1      -1      -1
+       25      -1      -1      -1
+       26      -1      -1      -1
+       27      -1      -1      -1
+       28      -1      -1      -1
+       29      -1      -1      -1
+       30      -1      -1      -1
+       31      -1      -1      -1
        0       1       24
        1       1       24
        2       1       24
        3       1       24
        4       6       17
        5       1       8
-       6       7       4
+       6       6       4
        16      2       24
        30      3       9
        31      4       2
index 724c90c..e1bee11 100644 (file)
@@ -94,6 +94,13 @@ int main(int argc, char **argv) {
   for(Int_t y=0; y<kNScChannels; y++){
     scMod[y]=scCh[y]=scSigCode[y]=scDet[y]=scSec[y]=0;
   }
+      
+  Int_t itdcCh=0;
+  Int_t tdcMod[kNScChannels], tdcCh[kNScChannels], tdcSigCode[kNScChannels];
+  Int_t tdcDet[kNScChannels], tdcSec[kNScChannels];
+  for(Int_t y=0; y<kNScChannels; y++){
+    tdcMod[y]=tdcCh[y]=tdcSigCode[y]=tdcDet[y]=tdcSec[y]=-1;
+  }
 
   /* log start of process */
   printf("ZDC EMD program started\n");  
@@ -252,6 +259,12 @@ int main(int argc, char **argv) {
                scSec[iScCh]     = rawStreamZDC->GetScTowerFromMap(iScCh);
                iScCh++;
              }
+             else if(modType[iMod]==6 && modGeo[iMod]==4){ // ZDC TDC mapping --------------------
+               tdcMod[itdcCh]     = rawStreamZDC->GetTDCModFromMap(itdcCh);
+               tdcCh[itdcCh]      = rawStreamZDC->GetTDCChFromMap(itdcCh);
+               tdcSigCode[itdcCh] = rawStreamZDC->GetTDCSignFromMap(itdcCh);
+               itdcCh++;
+             }
            }
          }
          // Writing data on output FXS file
@@ -267,6 +280,12 @@ int main(int argc, char **argv) {
             //printf("  CalibMB DA -> %d Scaler: mod %d ch %d, code %d det %d, sec %d\n",
             //  is,scMod[is],scCh[is],scSigCode[is],scDet[is],scSec[is]);
          }
+         for(Int_t is=0; is<kNScChannels; is++){
+            fprintf(mapFile4Shuttle,"\t%d\t%d\t%d\t%d\n",
+              is,tdcMod[is],tdcCh[is],tdcSigCode[is]);
+            //if(tdcMod[is]!=-1) printf("  Mapping DA -> %d TDC: mod %d ch %d, code %d\n",
+            //  is,tdcMod[is],tdcCh[is],tdcSigCode[is]);
+         }
          for(Int_t is=0; is<kNModules; is++){
             fprintf(mapFile4Shuttle,"\t%d\t%d\t%d\n",
             modGeo[is],modType[is],modNCh[is]);
index 7feca9c..fbf9071 100644 (file)
@@ -96,6 +96,13 @@ int main(int argc, char **argv) {
   for(Int_t y=0; y<kNScChannels; y++){
     scMod[y]=scCh[y]=scSigCode[y]=scDet[y]=scSec[y]=0;
   }
+      
+  Int_t itdcCh=0;
+  Int_t tdcMod[kNScChannels], tdcCh[kNScChannels], tdcSigCode[kNScChannels];
+  Int_t tdcDet[kNScChannels], tdcSec[kNScChannels];
+  for(Int_t y=0; y<kNScChannels; y++){
+    tdcMod[y]=tdcCh[y]=tdcSigCode[y]=tdcDet[y]=tdcSec[y]=-1;
+  }
 
   /* log start of process */
   printf("ZDC EMD program started\n");  
@@ -290,6 +297,12 @@ int main(int argc, char **argv) {
                scSec[iScCh]     = rawStreamZDC->GetScTowerFromMap(iScCh);
                iScCh++;
              }
+             else if(modType[iMod]==6 && modGeo[iMod]==4){ // ZDC TDC mapping --------------------
+               tdcMod[itdcCh]     = rawStreamZDC->GetTDCModFromMap(itdcCh);
+               tdcCh[itdcCh]      = rawStreamZDC->GetTDCChFromMap(itdcCh);
+               tdcSigCode[itdcCh] = rawStreamZDC->GetTDCSignFromMap(itdcCh);
+               itdcCh++;
+             }
            }
          }
          // Writing data on output FXS file
@@ -305,6 +318,12 @@ int main(int argc, char **argv) {
             //printf("  EMD DA -> %d Scaler: mod %d ch %d, code %d det %d, sec %d\n",
             //  is,scMod[is],scCh[is],scSigCode[is],scDet[is],scSec[is]);
          }
+         for(Int_t is=0; is<kNScChannels; is++){
+            fprintf(mapFile4Shuttle,"\t%d\t%d\t%d\t%d\n",
+              is,tdcMod[is],tdcCh[is],tdcSigCode[is]);
+            //if(tdcMod[is]!=-1) printf("  Mapping DA -> %d TDC: mod %d ch %d, code %d\n",
+            //  is,tdcMod[is],tdcCh[is],tdcSigCode[is]);
+         }
          for(Int_t is=0; is<kNModules; is++){
             fprintf(mapFile4Shuttle,"\t%d\t%d\t%d\n",
             modGeo[is],modType[is],modNCh[is]);
index 9fdf1da..8d24342 100644 (file)
@@ -89,7 +89,14 @@ int main(int argc, char **argv) {
   for(Int_t y=0; y<kNScChannels; y++){
     scMod[y]=scCh[y]=scSigCode[y]=scDet[y]=scSec[y]=0;
   }
-
+      
+  Int_t itdcCh=0;
+  Int_t tdcMod[kNScChannels], tdcCh[kNScChannels], tdcSigCode[kNScChannels];
+  Int_t tdcDet[kNScChannels], tdcSec[kNScChannels];
+  for(Int_t y=0; y<kNScChannels; y++){
+    tdcMod[y]=tdcCh[y]=tdcSigCode[y]=tdcDet[y]=tdcSec[y]=-1;
+  }
+  
   /* log start of process */
   printf("\n ZDC LASER program started\n");  
 
@@ -291,6 +298,12 @@ int main(int argc, char **argv) {
                scSec[iScCh]     = rawStreamZDC->GetScTowerFromMap(iScCh);
                iScCh++;
              }
+             else if(modType[iMod]==6 && modGeo[iMod]==4){ // ZDC TDC mapping --------------------
+               tdcMod[itdcCh]     = rawStreamZDC->GetTDCModFromMap(itdcCh);
+               tdcCh[itdcCh]      = rawStreamZDC->GetTDCChFromMap(itdcCh);
+               tdcSigCode[itdcCh] = rawStreamZDC->GetTDCSignFromMap(itdcCh);
+               itdcCh++;
+             }
            }
          }
          // Writing data on output FXS file
@@ -306,6 +319,12 @@ int main(int argc, char **argv) {
             //printf("  Laser DA -> %d Scaler: mod %d ch %d, code %d det %d, sec %d\n",
             //  is,scMod[is],scCh[is],scSigCode[is],scDet[is],scSec[is]);
          }
+         for(Int_t is=0; is<kNScChannels; is++){
+            fprintf(mapFile4Shuttle,"\t%d\t%d\t%d\t%d\n",
+              is,tdcMod[is],tdcCh[is],tdcSigCode[is]);
+            //if(tdcMod[is]!=-1) printf("  Mapping DA -> %d TDC: mod %d ch %d, code %d\n",
+            //  is,tdcMod[is],tdcCh[is],tdcSigCode[is]);
+         }
          for(Int_t is=0; is<kNModules; is++){
             fprintf(mapFile4Shuttle,"\t%d\t%d\t%d\n",
             modGeo[is],modType[is],modNCh[is]);
index 79e65e7..c7146bd 100644 (file)
@@ -119,25 +119,32 @@ int main(int argc, char **argv) {
       if(eventT==START_OF_DATA){
                
       
-      Int_t iMod=-1;
-      Int_t modGeo[kNModules], modType[kNModules],modNCh[kNModules];
-      for(Int_t kl=0; kl<kNModules; kl++){
-         modGeo[kl]=modType[kl]=modNCh[kl]=0;
-      }
-  
-      Int_t ich=0;
-      Int_t adcMod[2*kNChannels], adcCh[2*kNChannels], sigCode[2*kNChannels];
-      Int_t det[2*kNChannels], sec[2*kNChannels];
-      for(Int_t y=0; y<2*kNChannels; y++){
-        adcMod[y]=adcCh[y]=sigCode[y]=det[y]=sec[y]=0;
-      }
+        Int_t iMod=-1;
+        Int_t modGeo[kNModules], modType[kNModules],modNCh[kNModules];
+        for(Int_t kl=0; kl<kNModules; kl++){
+          modGeo[kl]=modType[kl]=modNCh[kl]=0;
+        }
+        
+        Int_t ich=0;
+        Int_t adcMod[2*kNChannels], adcCh[2*kNChannels], sigCode[2*kNChannels];
+        Int_t det[2*kNChannels], sec[2*kNChannels];
+        for(Int_t y=0; y<2*kNChannels; y++){
+          adcMod[y]=adcCh[y]=sigCode[y]=det[y]=sec[y]=-1;
+        }
       
-      Int_t iScCh=0;
-      Int_t scMod[kNScChannels], scCh[kNScChannels], scSigCode[kNScChannels];
-      Int_t scDet[kNScChannels], scSec[kNScChannels];
-      for(Int_t y=0; y<kNScChannels; y++){
-        scMod[y]=scCh[y]=scSigCode[y]=scDet[y]=scSec[y]=0;
-      }
+        Int_t iScCh=0;
+        Int_t scMod[kNScChannels], scCh[kNScChannels], scSigCode[kNScChannels];
+        Int_t scDet[kNScChannels], scSec[kNScChannels];
+        for(Int_t y=0; y<kNScChannels; y++){
+          scMod[y]=scCh[y]=scSigCode[y]=scDet[y]=scSec[y]=-1;
+        }
+      
+        Int_t itdcCh=0;
+        Int_t tdcMod[kNScChannels], tdcCh[kNScChannels], tdcSigCode[kNScChannels];
+        Int_t tdcDet[kNScChannels], tdcSec[kNScChannels];
+        for(Int_t y=0; y<kNScChannels; y++){
+          tdcMod[y]=tdcCh[y]=tdcSigCode[y]=tdcDet[y]=tdcSec[y]=-1;
+        }
        
        rawStreamZDC->SetSODReading(kTRUE);
        
@@ -162,7 +169,7 @@ int main(int argc, char **argv) {
                sec[ich]     = rawStreamZDC->GetTowerFromMap(ich);
                ich++;
              }
-             else if(modType[iMod]==2){ //VME scaler mapping --------------------
+             else if(modType[iMod]==2){ // VME scaler mapping -------------
                scMod[iScCh]     = rawStreamZDC->GetScalerModFromMap(iScCh);
                scCh[iScCh]      = rawStreamZDC->GetScalerChFromMap(iScCh);
                scSigCode[iScCh] = rawStreamZDC->GetScalerSignFromMap(iScCh);
@@ -170,6 +177,12 @@ int main(int argc, char **argv) {
                scSec[iScCh]     = rawStreamZDC->GetScTowerFromMap(iScCh);
                iScCh++;
              }
+             else if(modType[iMod]==6 && modGeo[iMod]==4){ // ZDC TDC mapping --------------------
+               tdcMod[itdcCh]     = rawStreamZDC->GetTDCModFromMap(itdcCh);
+               tdcCh[itdcCh]      = rawStreamZDC->GetTDCChFromMap(itdcCh);
+               tdcSigCode[itdcCh] = rawStreamZDC->GetTDCSignFromMap(itdcCh);
+               itdcCh++;
+             }
            }
          }
          // Writing data on output FXS file
@@ -182,9 +195,15 @@ int main(int argc, char **argv) {
          for(Int_t is=0; is<kNScChannels; is++){
             fprintf(mapFile4Shuttle,"\t%d\t%d\t%d\t%d\t%d\t%d\n",
               is,scMod[is],scCh[is],scSigCode[is],scDet[is],scSec[is]);
-            //if(scMod[is]!=0) printf("  Mapping DA -> %d Scaler: mod %d ch %d, code %d det %d, sec %d\n",
+            //if(scMod[is]!=-1) printf("  Mapping DA -> %d Scaler: mod %d ch %d, code %d det %d, sec %d\n",
             //  is,scMod[is],scCh[is],scSigCode[is],scDet[is],scSec[is]);
          }
+         for(Int_t is=0; is<kNScChannels; is++){
+            fprintf(mapFile4Shuttle,"\t%d\t%d\t%d\t%d\n",
+              is,tdcMod[is],tdcCh[is],tdcSigCode[is]);
+            //if(tdcMod[is]!=-1) printf("  Mapping DA -> %d TDC: mod %d ch %d, code %d\n",
+            //  is,tdcMod[is],tdcCh[is],tdcSigCode[is]);
+         }
          for(Int_t is=0; is<kNModules; is++){
             fprintf(mapFile4Shuttle,"\t%d\t%d\t%d\n",
             modGeo[is],modType[is],modNCh[is]);
index 196078b..3609601 100644 (file)
@@ -90,6 +90,14 @@ int main(int argc, char **argv) {
   for(Int_t y=0; y<kNScChannels; y++){
     scMod[y]=scCh[y]=scSigCode[y]=scDet[y]=scSec[y]=0;
   }
+      
+  Int_t itdcCh=0;
+  Int_t tdcMod[kNScChannels], tdcCh[kNScChannels], tdcSigCode[kNScChannels];
+  Int_t tdcDet[kNScChannels], tdcSec[kNScChannels];
+  for(Int_t y=0; y<kNScChannels; y++){
+    tdcMod[y]=tdcCh[y]=tdcSigCode[y]=tdcDet[y]=tdcSec[y]=-1;
+  }
+       
 
   /* log start of process */
   printf("\n ZDC PEDESTAL program started\n");  
@@ -245,7 +253,7 @@ int main(int argc, char **argv) {
       
       if(eventT==START_OF_DATA){
        
-       iMod=-1; ich=0; iScCh=0;
+       iMod=-1; ich=0; iScCh=0; itdcCh=0;
                        
        rawStreamZDC->SetSODReading(kTRUE);
        
@@ -278,6 +286,12 @@ int main(int argc, char **argv) {
                scSec[iScCh]     = rawStreamZDC->GetScTowerFromMap(iScCh);
                iScCh++;
              }
+             else if(modType[iMod]==6 && modGeo[iMod]==4){ // ZDC TDC mapping --------------------
+               tdcMod[itdcCh]     = rawStreamZDC->GetTDCModFromMap(itdcCh);
+               tdcCh[itdcCh]      = rawStreamZDC->GetTDCChFromMap(itdcCh);
+               tdcSigCode[itdcCh] = rawStreamZDC->GetTDCSignFromMap(itdcCh);
+               itdcCh++;
+             }
            }
          }
          // Writing data on output FXS file
@@ -293,6 +307,12 @@ int main(int argc, char **argv) {
             //printf("  Pedestal DA -> %d Scaler: mod %d ch %d, code %d det %d, sec %d\n",
             //  is,scMod[is],scCh[is],scSigCode[is],scDet[is],scSec[is]);
          }
+         for(Int_t is=0; is<kNScChannels; is++){
+            fprintf(mapFile4Shuttle,"\t%d\t%d\t%d\t%d\n",
+              is,tdcMod[is],tdcCh[is],tdcSigCode[is]);
+            //if(tdcMod[is]!=-1) printf("  Mapping DA -> %d TDC: mod %d ch %d, code %d\n",
+            //  is,tdcMod[is],tdcCh[is],tdcSigCode[is]);
+         }
          for(Int_t is=0; is<kNModules; is++){
             fprintf(mapFile4Shuttle,"\t%d\t%d\t%d\n",
             modGeo[is],modType[is],modNCh[is]);