]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - T0/AliT0RawData.cxx
The DA description is read form the DA source file and put in the RPM spec file
[u/mrichter/AliRoot.git] / T0 / AliT0RawData.cxx
index fb1604b0d7a5f9a4619af52a32581a340bced222..63ba212a8f9e2f936bafad425c1999b0f7527738 100644 (file)
@@ -23,7 +23,7 @@
 
 #include <Riostream.h>
 #include <TTree.h>
-
+#include <TMap.h>
 #include "AliT0.h"
 #include "AliT0RawData.h"
 #include "AliT0digit.h"
 #include "AliFstream.h"
 #include "AliRunLoader.h"
 #include "AliDAQ.h"
+#include "AliT0LookUpValue.h"
 
 ClassImp(AliT0RawData)
 
 //_____________________________________________________________________________
   AliT0RawData::AliT0RawData():TObject(),
- fVerbose(0),      
- fIndex(-1) ,     
- fEventNumber(0), 
- fTimeCFD(new TArrayI(24)),    
- fADC1( new TArrayI(24)),     
- fTimeLED( new TArrayI(24)), 
- fADC0( new TArrayI(24)),     
- fFile(0x0),   
- fDataHeaderPos(0),
- fDRMDataHeaderPos(0),
- fTRMDataHeaderPos(0),
- fDigits(0)  
+                              fVerbose(0),      
+                              fIndex(-1) ,     
+                              fEventNumber(0), 
+                              fTimeCFD(new TArrayI(24)),    
+                              fADC1( new TArrayI(24)),     
+                              fTimeLED( new TArrayI(24)), 
+                              fADC0( new TArrayI(24)),     
+                              fFile(0x0),   
+                              fDataHeaderPos(0),
+                              fDRMDataHeaderPos(0),
+                              fTRMDataHeaderPos(0),
+                              fDigits(0),
+                              fParam(0),
+                              fLookUp(0)
+  
 
 {
   /*
@@ -82,23 +86,44 @@ uncertances
   if (runloader) {
     fEventNumber = runloader->GetEventNumber();
   }
+
+  // Inverse lookup table for simulation
+
+  fParam = AliT0Parameters::Instance();
+  fParam->Init();
+  AliT0LookUpKey* lookkey= new AliT0LookUpKey();
+  AliT0LookUpValue*  lookvalue= new AliT0LookUpValue();
+  TMap *lookup = fParam->GetMapLookup();
+  TMapIter iter(lookup);
+
+  for( Int_t iline=0; iline<106; iline++)
+    {
+      lookvalue = ( AliT0LookUpValue*) iter.Next();
+      lookkey = (AliT0LookUpKey*) lookup->GetValue(lookvalue);
+      fLookUp.Add(lookkey, lookvalue);
+      lookkey= new AliT0LookUpKey();
+      lookvalue= new AliT0LookUpValue();
+    }
+    
 }
 
 //_____________________________________________________________________________
 
 AliT0RawData::AliT0RawData(const AliT0RawData &r):TObject(),
- fVerbose(0),      
- fIndex(-1) ,     
- fEventNumber(0), 
- fTimeCFD(new TArrayI(24)),    
- fADC1( new TArrayI(24)),     
- fTimeLED( new TArrayI(24)), 
- fADC0( new TArrayI(24)),     
- fFile(0x0),   
- fDataHeaderPos(0),
- fDRMDataHeaderPos(0),
- fTRMDataHeaderPos(0),
- fDigits(0)  
+                                                 fVerbose(0),      
+                                                 fIndex(-1) ,     
+                                                 fEventNumber(0), 
+                                                 fTimeCFD(new TArrayI(24)),    
+                                                 fADC1( new TArrayI(24)),     
+                                                 fTimeLED( new TArrayI(24)), 
+                                                 fADC0( new TArrayI(24)),     
+                                                 fFile(0x0),   
+                                                 fDataHeaderPos(0),
+                                                 fDRMDataHeaderPos(0),
+                                                 fTRMDataHeaderPos(0),
+                                                 fDigits(0)  ,
+                                                 fParam(0),
+                                                 fLookUp(0)
 
 {
   //
@@ -169,105 +194,94 @@ void AliT0RawData::GetDigits(AliT0digit *fDigits)
   for (i=1; i<25; i++) {
     allData->AddAt(fTimeLED->At(i-1),i);
     allData->AddAt(fTimeCFD->At(i-1),i+24);
-    allData->AddAt(fADC0->At(i-1),i+54);
-    allData->AddAt(fADC1->At(i-1),i+78);
+    allData->AddAt(fADC0->At(i-1),i+56);
+    allData->AddAt(fADC1->At(i-1),i+80);
 
   }
   allData->AddAt(meantime,49);
   allData->AddAt(timediff,50);
-  allData->AddAt(timediff,103); //trigger vertex
   allData->AddAt(timeA,51);
-  allData->AddAt(timeA,104); //trigger T0A
   allData->AddAt(timeC,52);
-  allData->AddAt(timeC,105); //trigger T0C
   allData->AddAt(mult0,53);
-  allData->AddAt(mult1,106); //trigger central
   allData->AddAt(mult1,54);
-  allData->AddAt(mult1,107); //trigger semi-central
+  allData->AddAt(mult0,55);
+  allData->AddAt(mult1,56);
 
-  // cout.setf( ios_base::hex, ios_base::basefield );
-  
+    cout.setf( ios_base::hex, ios_base::basefield );
   //space for DRM header
   fIndex += 6;
 
+
   Int_t startTRM=fIndex;
   //space for 1st TRM header
   fIndex ++;
   positionOfTRMHeader= fIndex;
-
   //space for chain  header
   fIndex ++;
-  WriteChainDataHeader(0, 0); // 
+  WriteChainDataHeader(1, 1); // 
+
+  //  fIndex++;
   // Loop through all PMT
   Int_t chain=0; 
   Int_t iTDC = 0;
   Int_t channel=0;
   Int_t trm1words=0;
-
-  //LED
-  for (Int_t det = 0; det < 55; det++) {
+  Int_t itrm=7;
+  Int_t inside =0;
+  Int_t isData = 0;
+  AliT0LookUpKey * lookkey  = new AliT0LookUpKey();
+  AliT0LookUpValue * lookvalue ;//= new AliT0LookUpValue(trm,tdc,chain,channel);
+  for (Int_t det = 0; det < 105; det++) {
     time = allData->At(det);
-    if (time >0)  
-      FillTime(channel,  iTDC,  time); 
-    if (channel < 6) channel +=2;
-    else {
-      channel = 0; 
-      iTDC++;
-      if (iTDC>15) { chain++; iTDC=0;}
+    if (time >0) {
+      lookkey->SetKey(det);
+      lookvalue = (AliT0LookUpValue*) fLookUp.GetValue((TObject*)lookkey);     
+      if (lookvalue ) 
+       {
+         isData++;
+         itrm= lookvalue->GetTRM();
+         if (det >56 &&inside ==0)  {
+           WriteChainDataTrailer(1); // 1st chain trailer
+           fIndex++;
+           WriteChainDataHeader(2, 1);
+           //      fIndex++;
+           inside++;
+         }         
+         chain = lookvalue->GetChain();
+         iTDC = lookvalue->GetTDC();
+         channel = lookvalue->GetChannel();
+         FillTime(channel,  iTDC,  time);
+       }
+      else
+       {
+         cout<<" no lookup value for key "<<det<<endl;
+         //  break;
+       }
     }
+    
   }
-  
-
-  WriteChainDataTrailer(1); // 1st chain trailer
-  fIndex++;
-  WriteChainDataHeader(2, 1); // 
+  if (inside==0) {
+    WriteChainDataTrailer(1); // 1st chain trailer
+    fIndex++;
+    WriteChainDataHeader(2, 1);
+  }
+    //  WriteChainDataHeader(2, 1); // 
   WriteChainDataTrailer(3); // 2st chain trailer
   WriteTrailer(15,0,fEventNumber,5); // 1st TRM trailer
+  
+  
   trm1words = fIndex - startTRM;
-  WriteTRMDataHeader(0, trm1words , positionOfTRMHeader);
-
-
   //space for 2st TRM header
-  startTRM=fIndex;
-  fIndex ++;
-  positionOfTRMHeader= fIndex;
-  // chain  header
-  fIndex ++;
-  WriteChainDataHeader(0, 0); // 
-  chain=0; 
-  iTDC = 0;
-  channel=0;
-
-  for (Int_t det = 55; det < 108; det++) {
-    time = allData->At(det);
-    
-    if (time >0)  
-      FillTime(channel,  iTDC,  time); 
-     
-    if (channel < 6) channel +=2;
-    else {
-      channel = 0; 
-      iTDC++;
-      if (iTDC>15) { chain++; iTDC=0;}
-    }
-    
-    
-  }
-    WriteChainDataTrailer(1); // 1st chain trailer
-    fIndex++;
-    WriteChainDataHeader(2, 1); // 
-    WriteChainDataTrailer(3); // 2st chain trailer
-    WriteTrailer(15,0,fEventNumber,5); // 1st TRM trailer
-    trm1words = fIndex - startTRM;
-    WriteTRMDataHeader(1, trm1words , positionOfTRMHeader);
-    //DRM trailer
-    WriteTrailer(1,0,fEventNumber,5); // 1st TRM trailer
+  
+  WriteTRMDataHeader(itrm, trm1words , positionOfTRMHeader);
+  
+  //DRM trailer
+  WriteTrailer(1,0,fEventNumber,5);
     
     WriteDRMDataHeader();
-
+    
     delete allData;
-
+    
 }
 //------------------------------------------------------------------------------
 void AliT0RawData::PackWord(UInt_t &BaseWord, UInt_t Word, Int_t StartBit, Int_t StopBit)
@@ -390,7 +404,7 @@ void  AliT0RawData::WriteTRMDataHeader(UInt_t slotID, Int_t nWordsInTRM,
   word=4;
   PackWord(baseWord,word,28,31); // 0100 marks header
   fBuffer[positionOfTRMHeader] =  baseWord;
-
+//  cout<<" TRM header "<<baseWord<<endl;
   word=0; 
   baseWord=0;
      
@@ -420,7 +434,7 @@ void  AliT0RawData::WriteChainDataHeader(UInt_t chainNumber,UInt_t slotID)
   word=chainNumber;
   PackWord(baseWord,word,28,31); // 0100 marks header
   fBuffer[fIndex] =  baseWord;
-
+  //cout<<" chain header "<<baseWord<<" number "<<chainNumber<<endl;
   word=0;
   baseWord=0;     
   
@@ -444,7 +458,7 @@ void  AliT0RawData::WriteChainDataTrailer(UInt_t chainNumber )
   PackWord(baseWord,word,28,31); // chain number
   fIndex++;
   fBuffer[fIndex] =  baseWord;
-
+ // cout<<" chain trailer "<<baseWord<<endl;
   word=0;
   baseWord=0;     
   
@@ -492,7 +506,7 @@ void  AliT0RawData::WriteTrailer(UInt_t slot, Int_t word1, UInt_t word2, UInt_t
   PackWord(baseWord,word,28,31); //  marks trailer
   fIndex++;
   fBuffer[fIndex] =  baseWord;
-
+ // cout<<" trailer "<<baseWord<<endl;
   word=0;
   baseWord=0;
 
@@ -521,9 +535,8 @@ void  AliT0RawData::FillTime(Int_t ch, Int_t iTDC, Int_t time)
   PackWord(baseWord,word, 31, 31); // 1
   fIndex++;
   fBuffer[fIndex]=baseWord;
-  word=0;
// cout<<" data  "<<baseWord<<endl;  word=0;
   baseWord=0;
-       
 }
 //---------------------------------------------------------------------------------------
 
@@ -540,7 +553,7 @@ Int_t AliT0RawData::RawDataT0(AliT0digit *fDigits)
 
   fIndex=-1;
  
-  AliRawDataHeaderSim header;
+
    WriteDataHeader(kTRUE, kFALSE);
   GetDigits(fDigits);
   //write packing digits