]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - TOF/AliTOFRawDataRead.C
Fix needed in case several AliESDEvent instances want to connect to the same tree.
[u/mrichter/AliRoot.git] / TOF / AliTOFRawDataRead.C
index 94ed79fe75ea1438f65b9131a196438fa22f92e6..1629e9bdbe612074d68da823664497662fa2b1cc 100644 (file)
@@ -1,7 +1,3 @@
-// gSystem->SetIncludePath("-I$ROOTSYS/include -I$ALICE_ROOT/include -I$ALICE_ROOT/RAW -I$ALICE_ROOT/TOF")
-// .L AliTOFRawDataRead.C++
-// AliTOFRawDataRead()
-
 #if !defined(__CINT__) || defined(__MAKECINT__)
 
 // Root include files
@@ -28,84 +24,39 @@ void AliTOFRawDataRead(Int_t iEvent)
   // To read TOF raw data
   //
 
-  TClonesArray *fTOFrawData = new TClonesArray("AliTOFrawData",1000);
+  AliTOFrawData *tofRawDatum=new AliTOFrawData();
+  TTree *PackedDataTree= new TTree("PackedDataTree", "Decoded Packed Data");
+  PackedDataTree->Branch("HitData", "AliTOFrawData", &tofRawDatum);
+
+  TClonesArray *clonesRawData = new TClonesArray("AliTOFrawData",1000);
   Int_t fPackedDigits=0;
 
-  Int_t indexDDL = 0;
   Int_t detectorIndex[5] = {-1, -1, -1, -1, -1};
   Int_t dummy = -1;
 
-  AliRawReaderFile reader(iEvent);
-  reader.RewindEvents();
+  AliRawReader *reader = new AliRawReaderFile(iEvent);
+  reader->RewindEvents();
 
   ofstream ftxt;
   ftxt.open("TOFrawDataReading.txt",ios::app);
 
-  while (reader.NextEvent()) {
+  while (reader->NextEvent()) {
 
-    AliTOFRawMap *rawMap = new AliTOFRawMap(fTOFrawData);
+    AliTOFRawMap *rawMap = new AliTOFRawMap(clonesRawData);
 
     Int_t slot[4] = {-1, -1, -1, -1};
 
-   for (indexDDL = 0; indexDDL < AliDAQ::NumberOfDdls("TOF"); indexDDL++) {
-
-     rawMap->Clear();
-     fTOFrawData->Clear();
-     fPackedDigits = 0;
-
-     printf(" \n \n \n DRM number %2i \n \n \n ", indexDDL);
-
-     reader.Reset();
-     AliTOFRawStream stream(&reader);
-
-     reader.Select("TOF", indexDDL, indexDDL);
-     Bool_t signal = kFALSE;
-
-     while(stream.Next()) {
-
-       signal = (stream.GetSector()!=-1 &&
-                stream.GetPlate()!=-1 &&
-                stream.GetStrip()!=-1 &&
-                stream.GetPadZ()!=-1 &&
-                stream.GetPadX()!=-1);
-
-       if (signal) {
-        printf("  %2i  %1i  %2i  %1i  %2i  \n", stream.GetSector(), stream.GetPlate(), stream.GetStrip(), stream.GetPadZ(), stream.GetPadX());
-
-        slot[0] = stream.GetTRM();
-        slot[1] = stream.GetTRMchain();
-        slot[2] = stream.GetTDC();
-        slot[3] = stream.GetTDCchannel();
+   for (Int_t indexDDL = 0; indexDDL < AliDAQ::NumberOfDdls("TOF"); indexDDL++) {
 
-        if (rawMap->TestHit(slot) != kEmpty) {
+     reader->Reset();
+     AliTOFRawStream stream(reader);
+     stream.LoadRawData(indexDDL);
 
-          AliTOFrawData *rawDigit = static_cast<AliTOFrawData*>(rawMap->GetHit(slot));
-          rawDigit->Update(stream.GetTofBin(), stream.GetToTbin(), stream.GetLeadingEdge(), stream.GetTrailingEdge(), stream.GetPSbit(), stream.GetACQ(), stream.GetErrorFlag());
+     clonesRawData = (TClonesArray*)stream.GetRawData();
 
-        }
-        else {
+     for (Int_t iRawData = 0; iRawData<clonesRawData->GetEntriesFast(); iRawData++) {
 
-          TClonesArray &arrayTofRawData =  *fTOFrawData;
-          new (arrayTofRawData[fPackedDigits++]) AliTOFrawData(stream.GetTRM(), stream.GetTRMchain(), stream.GetTDC(), stream.GetTDCchannel(),
-                                                               stream.GetTofBin(), stream.GetToTbin(), stream.GetLeadingEdge(), stream.GetTrailingEdge(),
-                                                               stream.GetPSbit(), stream.GetACQ(), stream.GetErrorFlag());
-
-          rawMap->SetHit(slot);
-
-          printf("  %6i \n", rawMap->GetHitIndex(slot));
-
-        }
-
-       } // end if (signal)
-
-     } // closed loop on TOF raw data per current DDL file
-
-     printf("\n \n \n end of reading DRM number %2i\n", indexDDL);
-     printf("                                     packed data %5i\n \n \n ", fTOFrawData->GetEntriesFast());
-
-     for (Int_t iRawData = 0; iRawData<fTOFrawData->GetEntriesFast(); iRawData++) {
-
-       AliTOFrawData *tofRawDatum = (AliTOFrawData*)fTOFrawData->UncheckedAt(iRawData);
+       tofRawDatum = (AliTOFrawData*)clonesRawData->UncheckedAt(iRawData);
 
        if (tofRawDatum->GetTOT()==-1 || tofRawDatum->GetTOF()==-1) continue;
 
@@ -133,14 +84,22 @@ void AliTOFRawDataRead(Int_t iEvent)
        if (detectorIndex[4]<10) ftxt << "  " << detectorIndex[4];
        else                     ftxt << " " << detectorIndex[4];
 
-       if (tofRawDatum->GetTOT()<10)                                    ftxt << "        " << tofRawDatum->GetTOT();
-       else if (tofRawDatum->GetTOT()>=10 && tofRawDatum->GetTOT()<100) ftxt << "       " << tofRawDatum->GetTOT();
-       else                                                             ftxt << "      " << tofRawDatum->GetTOT();
-       if (tofRawDatum->GetTOF()<10)                                      ftxt << "      " << tofRawDatum->GetTOF() << endl;
-       else if (tofRawDatum->GetTOF()>=10 && tofRawDatum->GetTOF()<100)   ftxt << "     " << tofRawDatum->GetTOF() << endl;
-       else if (tofRawDatum->GetTOF()>=100 && tofRawDatum->GetTOF()<1000) ftxt << "    " << tofRawDatum->GetTOF() << endl;
-       else                                                               ftxt << "   " << tofRawDatum->GetTOF() << endl;
-
+       if (tofRawDatum->GetTOT()<10)                                            ftxt << "        " << tofRawDatum->GetTOT();
+       else if (tofRawDatum->GetTOT()>=10 && tofRawDatum->GetTOT()<100)         ftxt << "       " << tofRawDatum->GetTOT();
+       else if (tofRawDatum->GetTOT()>=100 && tofRawDatum->GetTOT()<1000)       ftxt << "      " << tofRawDatum->GetTOT();
+       else if (tofRawDatum->GetTOT()>=1000 && tofRawDatum->GetTOT()<10000)     ftxt << "     " << tofRawDatum->GetTOT();
+       else if (tofRawDatum->GetTOT()>=10000 && tofRawDatum->GetTOT()<100000)   ftxt << "    " << tofRawDatum->GetTOT();
+       else if (tofRawDatum->GetTOT()>=100000 && tofRawDatum->GetTOT()<1000000) ftxt << "   " << tofRawDatum->GetTOT();
+       else                                                                     ftxt << "  " << tofRawDatum->GetTOT();
+       if (tofRawDatum->GetTOF()<10)                                            ftxt << "        " << tofRawDatum->GetTOF() << endl;
+       else if (tofRawDatum->GetTOF()>=10 && tofRawDatum->GetTOF()<100)         ftxt << "       " << tofRawDatum->GetTOF() << endl;
+       else if (tofRawDatum->GetTOF()>=100 && tofRawDatum->GetTOF()<1000)       ftxt << "      " << tofRawDatum->GetTOF() << endl;
+       else if (tofRawDatum->GetTOF()>=1000 && tofRawDatum->GetTOF()<10000)     ftxt << "     " << tofRawDatum->GetTOF() << endl;
+       else if (tofRawDatum->GetTOF()>=10000 && tofRawDatum->GetTOF()<100000)   ftxt << "    " << tofRawDatum->GetTOF() << endl;
+       else if (tofRawDatum->GetTOF()>=100000 && tofRawDatum->GetTOF()<1000000) ftxt << "   " << tofRawDatum->GetTOF() << endl;
+       else                                                                     ftxt << "  " << tofRawDatum->GetTOF() << endl;
+
+       PackedDataTree->Fill();
      } // end loop
 
    } // endl loop on DDL files
@@ -150,5 +109,9 @@ void AliTOFRawDataRead(Int_t iEvent)
   } // end while loop on event
 
   ftxt.close();
+  TFile fileOut("TOF_rawQA_OldDecoder.root", "RECREATE");
+  PackedDataTree->Write();
+  fileOut.Close();
 
 }
+