]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - START/AliSTARTRawData.cxx
AliSTARTRawData.cxx AliSTARTRawData.h Coding Convemtion Violetions fixed according...
[u/mrichter/AliRoot.git] / START / AliSTARTRawData.cxx
index 879278309aee9fa6452a367ffc62f3e9507c0829..b9b2f9b7231c11529377b799f3b03c7f6945c158 100644 (file)
 #include "AliSTART.h"
 #include "AliSTARTRawData.h"
 #include "AliSTARTdigit.h"
-#include "AliSTARTLoader.h"
-
-#include <AliLoader.h>
-#include <AliRunLoader.h>
-#include "/home/alla/AliRoot/verynew/RAW/AliRawDataHeader.h"
-#include "/home/alla/AliRoot/verynew/RAW/AliRawData.h"
+#include <TTree.h>
+#include "AliRawDataHeader.h"
 
 ClassImp(AliSTARTRawData)
 
 //_____________________________________________________________________________
 AliSTARTRawData::AliSTARTRawData():TObject()
 {
-
+  /*
+-  48 channels (2 words each as in TOF DDL) for :
+word 1 :0-5bit number of PMT; word 2: 0-7 error sign, 8-31 TDC
+and the same but for amplified signal. Now I wrote the same time because
+CDF are not ready and differences didn't measured yet.
+
+-  96 channel for amplitude: very preliminary, QTC features are not
+known now, preliminary i put as T1 time signal for this PMT in first
+channel and T1+A in second, where A=Log(Amplitude);
+and the same for amplified but A=Log(10*Amplitude).
+
+- T0-A and T0-C 2 channels
+- T0A-T0C vertex information
+- Time Meaner where T0C TOF increase to the T0A TOF distance
+- 6 multiplicity signals the same way as amplitude and with the same
+uncertances
+  */
 
   fIndex=-1;
   fDigits = NULL;
-  
-  ftimeTDC = new TArrayI(24); 
-   fADC = new TArrayI(24); 
-   
-  this->Dump();
+
+  fTimeTDC = new TArrayI(24);
+  fADC = new TArrayI(24);
+  fTimeTDCAmp = new TArrayI(24);
+  fADCAmp = new TArrayI(24);
+  fSumMult = new TArrayI(6);
+   //   this->Dump();
   
 }
 
@@ -68,14 +81,15 @@ AliSTARTRawData::~AliSTARTRawData()
   //
   // Destructor
   //
-
   if (fDigits) {
     delete fDigits;
     fDigits = NULL;
-    delete ftimeTDC;
-    delete fADC;
   }
-
+  delete fTimeTDC;
+  delete fADC;
+  delete fTimeTDCAmp;
+  delete fADCAmp;
+  delete fSumMult;
 }
 
 //_____________________________________________________________________________
@@ -98,31 +112,27 @@ void AliSTARTRawData::GetDigits(AliSTARTdigit *fDigits, UInt_t *buf)
 
   //read START digits and fill TDC and ADC arrays
 
-  cout<<"GetDigits(AliSTARTdigit *fDigits, UInt_t *buf) "<<endl;
+
   UInt_t word;
   UInt_t baseWord=0;
   Int_t error=0;
+    // Get the digits array
 
-    fDigits->Print();
-
-   // Get the digits array
-
-      fDigits->GetTime(*ftimeTDC);
-      fDigits->GetADC(*fADC);
-      fBestTimeRight=fDigits->GetBestTimeRight();
-      fBestTimeLeft=fDigits->GetBestTimeLeft();
-      fMeanTime = fDigits-> GetMeanTime();
-
+  fDigits->GetTime(*fTimeTDC);
+  fDigits->GetADC(*fADC);
+  fDigits->GetTimeAmp(*fTimeTDCAmp);
+  fDigits->GetADCAmp(*fADCAmp);
+  fDigits->GetSumMult(*fSumMult);
      
   // Loop through all PMT
  
-
   for (Int_t det = 0; det < 24; det++) {
-    Int_t time=ftimeTDC->At(det);
-    Int_t ADC=fADC->At(det);
-    printf(" right det %x time %x ADC %x \n",det,time,ADC);
-    //conver ADC to time (preliminary algorithm)
+    Int_t time=fTimeTDC->At(det);
+    Int_t qtc=fADC->At(det);
+    Int_t timeAmp=fTimeTDCAmp->At(det);
+    Int_t qtcAmp=fADCAmp->At(det);
 
+    //conver ADC to time (preliminary algorithm)
 
      // DDL 1 0-5 -#PMT, 6-31 - empty
 
@@ -134,13 +144,14 @@ void AliSTARTRawData::GetDigits(AliSTARTdigit *fDigits, UInt_t *buf)
      word=0;
      baseWord=0;
 
-     //TDC   
+     //TDC    
      word=error;
      PackWord(baseWord,word,0, 7); // Error flag
      word=time;
      PackWord(baseWord,word,8,31); // time-of-flight
      fIndex++;
      buf[fIndex]=baseWord;
+
      word=0;
      baseWord=0;
     
@@ -155,10 +166,11 @@ void AliSTARTRawData::GetDigits(AliSTARTdigit *fDigits, UInt_t *buf)
      //  amplified TDC    
      word=error;
      PackWord(baseWord,word,0, 7); // Error flag
-     word=time;
+     word=timeAmp;
      PackWord(baseWord,word,8,31); // time-of-flight
      fIndex++;
      buf[fIndex]=baseWord;
+
      word=0;
      baseWord=0;
 
@@ -173,12 +185,13 @@ void AliSTARTRawData::GetDigits(AliSTARTdigit *fDigits, UInt_t *buf)
      // ADC -> TDC     
      word=error;
      PackWord(baseWord,word,0, 7); // Error flag
-     word=ADC;
+     word=time;
      PackWord(baseWord,word,8,31); // time-of-flight
      fIndex++;
      buf[fIndex]=baseWord;
 
-     //Amplified  ADC -> TDC 
+
+     // ADC -> TDC :QTC 
      word=0;
      baseWord=0;
 
@@ -189,90 +202,142 @@ void AliSTARTRawData::GetDigits(AliSTARTdigit *fDigits, UInt_t *buf)
      baseWord=0;
      word=error;
      PackWord(baseWord,word,0, 7); // Error flag
-     word=ADC;
+     word=time+qtc;
      PackWord(baseWord,word,8,31); // time-of-flight
      fIndex++;
      buf[fIndex]=baseWord;
+
      word=0;
      baseWord=0;
 
+    // DDL 4 amplified QTC charge * 10
+     word=det;;
+     PackWord(baseWord,word, 0, 5); // number of PMT on the right side
+     fIndex++;
+     buf[fIndex]=baseWord;
+     word=0;
+     baseWord=0;
+
+     // ADC -> TDC     
+     word=error;
+     PackWord(baseWord,word,0, 7); // Error flag
+     word=timeAmp;
+     PackWord(baseWord,word,8,31); // time-of-flight
+     fIndex++;
+     buf[fIndex]=baseWord;
 
+     //Amplified  ADC -> TDC 
+     word=0;
+     baseWord=0;
+
+     word=det;;
+     PackWord(baseWord,word, 0, 5); // number of PMT on the right side
+     fIndex++;
+     buf[fIndex]=baseWord;
+     baseWord=0;
+     word=error;
+     PackWord(baseWord,word,0, 7); // Error flag
+     word=time+qtcAmp;
+     PackWord(baseWord,word,8,31); // time-of-flight
+     fIndex++;
+     buf[fIndex]=baseWord;
+
+     word=0;
+     baseWord=0;
  }
-  /*
-  //timemean
+
+
+  word=0;
+  baseWord=0;
   fIndex++;
-  buf[fIndex]=baseWord;
   word=25;
   PackWord(baseWord,word, 0, 5); // number of PMT on the right side
-  word=fMeanTime;
+  word=fDigits->MeanTime();
   PackWord(baseWord,word, 6, 31); // TDC on the right side from Marin
-  printf("meantime buf[%i]=%x\n",fIndex,buf[fIndex]);
-  
-  fIndex++;
   buf[fIndex]=baseWord;
-  
+
   baseWord=0;
-  
   word=error;
   PackWord(baseWord,word,0, 7); // Error flag
-  word=fMeanTime;
+  word=fDigits->MeanTime();
   PackWord(baseWord,word,8,31); // time-of-flight
-  
   fIndex++;
   buf[fIndex]=baseWord;
-  
-  printf("meantime buf[%i]=%x\n",fIndex,buf[fIndex]);
 
-     
+
+
   // besttime right & left
-  fIndex++;
-  cout<<" left "<<fBestTimeLeft<<" right "<<fBestTimeRight<<endl;
-  buf[fIndex]=baseWord;
+  //  fIndex++;
+  //  buf[fIndex]=baseWord;
   word=26;
   PackWord(baseWord,word, 0, 5); // number of PMT on the right side
-  word=fBestTimeRight;
+  word=fDigits->BestTimeRight();
   PackWord(baseWord,word, 6, 31); // TDC on the right side from Marin
-  printf("best buf[%i]=%x\n",fIndex,buf[fIndex]);
-  
   fIndex++;
   buf[fIndex]=baseWord;
-  
+
   baseWord=0;
-  
   word=error;
   PackWord(baseWord,word,0, 7); // Error flag
-  word=fBestTimeRight;
+  word=fDigits->BestTimeRight();
   PackWord(baseWord,word,8,31); // time-of-flight
-  
   fIndex++;
   buf[fIndex]=baseWord;
-  
-  printf("4 right buf[%i]=%x\n",fIndex,buf[fIndex]);
-  
+
   word=27;
   PackWord(baseWord,word, 0, 5); // number of PMT on the right side
-  word=fBestTimeLeft;
+  word=fDigits->BestTimeLeft();
   PackWord(baseWord,word, 6, 31); // TDC on the right side from Marin
-  printf("5 left buf[%i]=%x\n",fIndex,buf[fIndex]);
-  
   fIndex++;
   buf[fIndex]=baseWord;
-  
+
   baseWord=0;
-  
+
   word=error;
   PackWord(baseWord,word,0, 7); // Error flag
-  word=fBestTimeLeft;
+  word=fDigits->BestTimeLeft();
   PackWord(baseWord,word,8,31); // time-of-flight
-  
   fIndex++;
   buf[fIndex]=baseWord;
-  
-  printf("5 left buf[%i]=%x\n",fIndex,buf[fIndex]);
-  */   
-  word=0;
+
+  // time difference
+  word=28;
+  PackWord(baseWord,word, 0, 5); // number of PMT on the right side
+  word=fDigits->TimeDiff();
+  PackWord(baseWord,word, 6, 31); // TDC on the right side from Marin
+  fIndex++;
+  buf[fIndex]=baseWord;
+
   baseWord=0;
-   
+
+  word=error;
+  PackWord(baseWord,word,0, 7); // Error flag
+  word=fDigits->TimeDiff();
+  PackWord(baseWord,word,8,31); // time-of-flight
+  fIndex++;
+  buf[fIndex]=baseWord;
+
+  // multiplicity 
+
+  for (Int_t i=0; i<6; i++)
+    {
+      Int_t mult=fSumMult->At(i);
+      word=29+i;
+      PackWord(baseWord,word, 0, 5); 
+      word=mult;
+      PackWord(baseWord,word, 6, 31); // TDC on the right side from Marin
+      fIndex++;
+      buf[fIndex]=baseWord;
+      
+      baseWord=0;
+      word=error;
+      PackWord(baseWord,word,0, 7); // Error flag
+      word=mult;
+      PackWord(baseWord,word,8,31); // time QTC
+      fIndex++;
+      buf[fIndex]=baseWord;
+    }
+  cout<<endl;
 }
 
 //-------------------------------------------------------------------------------------
@@ -310,9 +375,11 @@ void AliSTARTRawData::PackWord(UInt_t &BaseWord, UInt_t Word, Int_t StartBit, In
 }
 //---------------------------------------------------------------------------------------
 
-Int_t AliSTARTRawData::RawDataSTART(AliSTARTdigit *fDigits){
-  
-  //This method creates the Raw data files for TOF detector
+Int_t AliSTARTRawData::RawDataSTART(AliSTARTdigit *fDigits)
+{
+   //This method creates the Raw data files for START detector
+
+
   const Int_t kSize=512; //2*AliTOFGeometry::NpadXSector() 
                           //max number of digits per DDL file times 2
   UInt_t buf[kSize];
@@ -324,9 +391,9 @@ Int_t AliSTARTRawData::RawDataSTART(AliSTARTdigit *fDigits){
   char fileName[15];
   ofstream outfile;         // logical name of the output file 
   AliRawDataHeader header;
-  cout<<" AliRawDataHeader header; start "<<endl;
   //loop over TOF DDL files
-     sprintf(fileName,"START_0xd00.ddl"); //The name of the output file
+  sprintf(fileName,"START_%d.ddl", 0xd00);
+  //   sprintf(fileName,"START_0xd00.ddl"); //The name of the output file
 #ifndef __DECCXX
     outfile.open(fileName,ios::binary);
 #else
@@ -342,18 +409,11 @@ Int_t AliSTARTRawData::RawDataSTART(AliSTARTdigit *fDigits){
 
     fIndex++;
     buf[fIndex]=baseWord;
-
-    //   branch->GetEvent();
-
-    //For each DDL file, buf contains the array of data words in Binary format
-    //fIndex gives the number of 32 bits words in the buffer for each DDL file
-    cout<<" AliSTARTRawData::RawDataSTART "<<fDigits<<endl;
-
     GetDigits(fDigits,buf);
-    cout<<"REAL DATA "<<fIndex<<endl;
-   outfile.write((char *)buf,((fIndex+1)*sizeof(UInt_t)));
+
+    outfile.write((char *)buf,((fIndex+1)*sizeof(UInt_t)));
     for(Int_t ii=0;ii<(fIndex+1);ii++) buf[ii]=0;
-     fIndex=-1;
+    fIndex=-1;
     
     //Write REAL DATA HEADER
     UInt_t currentFilePosition=outfile.tellp();