]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - TPC/AliTPCBuffer.cxx
coverity fix
[u/mrichter/AliRoot.git] / TPC / AliTPCBuffer.cxx
index 117cb60362a53674eff025a6f8d2ddacecf70b51..fdbdb72a228af7e1a5bb87d2b9ab197783a1665e 100644 (file)
 // This class is used by AliTPCDDL.C macro
 // Author: D.Favretto
 
-#include "Riostream.h"
-#include "TObjArray.h"
+#include <Riostream.h>
+#include <TObjArray.h>
 #include "AliTPCBuffer.h"
 #include "AliSimDigits.h"
 
 //#include "TFile.h"
 //#include "TTree.h"
 
+using std::ios;
+using std::ofstream;
+using std::endl;
 ClassImp(AliTPCBuffer)
 //////////////////////////////////////////////////////////////////////////////////////////////////////////////
-AliTPCBuffer::AliTPCBuffer(const char* fileName){
+//___________________________________________________________
+  AliTPCBuffer::AliTPCBuffer():TObject(),
+    fVerbose(0),
+    fNumberOfDigits(0),
+    f()
+{
+  //
+  // default
+  //
+}
+//____________________________________________________________
+  AliTPCBuffer::AliTPCBuffer(const char* fileName):TObject(),
+    fVerbose(0),
+    fNumberOfDigits(0),
+    f()
+{
   // Constructor
-  f.open("AliTPCDDL.dat",ios::binary|ios::out);
+#ifndef __DECCXX
+  f.open(fileName,ios::binary|ios::out);
+#else
+  f.open(fileName,ios::out);
+#endif
   // fout=new TFile(fileName,"recreate");
   // tree=new TTree("tree","Values");
-  fNumberOfDigits=0;
-  fVerbose=0;
+
+  remove("TPCdigits.txt");
 }
 
 //////////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -47,7 +69,11 @@ AliTPCBuffer::~AliTPCBuffer(){
   //delete fout;
 }
 //////////////////////////////////////////////////////////////////////////////////////////////////////////////
-AliTPCBuffer::AliTPCBuffer(const AliTPCBuffer &source){
+AliTPCBuffer::AliTPCBuffer(const AliTPCBuffer &source):TObject(source),
+    fVerbose(0),
+    fNumberOfDigits(0),
+    f()
+{
   // Copy Constructor
   this->fVerbose=source.fVerbose;
   return;
@@ -55,7 +81,9 @@ AliTPCBuffer::AliTPCBuffer(const AliTPCBuffer &source){
 //////////////////////////////////////////////////////////////////////////////////////////////////////////////
 AliTPCBuffer& AliTPCBuffer::operator=(const AliTPCBuffer &source){
   //Assigment operator
-  this->fVerbose=source.fVerbose;
+  if(this!=&source){
+    this->fVerbose=source.fVerbose;
+  }
   return *this;
 }
 //////////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -126,21 +154,40 @@ void AliTPCBuffer::WriteRowBinary(Int_t eth,AliSimDigits *digrow,Int_t minPad,In
   data.Sec=sec;
   data.SubSec=SubSec;
   data.Row=row;
-  digrow->First();
+  if (!digrow->First()) return;
+  Int_t padID=-1;
+  Int_t ddlNumber=0;
+  ofstream ftxt;
+  if (fVerbose==2){
+    ftxt.open("TPCdigits.txt",ios::app);
+    if(sec<36)
+      ddlNumber=sec*2+SubSec;
+    else
+      ddlNumber=72+(sec-36)*4+SubSec;
+  }//end if
   do{
-    data.Dig=digrow->CurrentDigit(); //adc
-    data.Time=digrow->CurrentRow(); //time
-    data.Pad =digrow->CurrentColumn(); // pad 
+    data.Dig=digrow->CurrentDigit();    //adc
+    data.Time=digrow->CurrentRow();     //time
+    data.Pad =digrow->CurrentColumn();  // pad 
+    if(fVerbose==2)
+      if (padID!=data.Pad){
+       ftxt<<"S:"<<data.Sec<<" DDL:"<<ddlNumber<<" R:"<<data.Row<<" P:"<<data.Pad<<endl;
+       padID=data.Pad;
+      }//end if
     if(data.Dig>eth){
       switch (flag){
       case 0:{
        fNumberOfDigits++;
        f.write((char*)(&data),sizeof(data));
+       if(fVerbose==2)
+         ftxt<<"A:"<<data.Dig<<" T:"<<data.Time<<endl; 
        break;
       }//end case 0
       case 1:{
        if((data.Pad>=minPad)&&(data.Pad<=maxPad)){
          f.write((char*)(&data),sizeof(data));
+         if(fVerbose==2)
+           ftxt<<"A:"<<data.Dig<<" T:"<<data.Time<<endl; 
          fNumberOfDigits++;
        }
        break;
@@ -148,6 +195,8 @@ void AliTPCBuffer::WriteRowBinary(Int_t eth,AliSimDigits *digrow,Int_t minPad,In
       case 2:{
        if((data.Pad<minPad)||(data.Pad>maxPad)){
          f.write((char*)(&data),sizeof(data));
+         if(fVerbose==2)
+           ftxt<<"A:"<<data.Dig<<" T:"<<data.Time<<endl; 
          fNumberOfDigits++;
        }
        break;
@@ -155,6 +204,8 @@ void AliTPCBuffer::WriteRowBinary(Int_t eth,AliSimDigits *digrow,Int_t minPad,In
       };//end switch
     }//end if
   }while (digrow->Next());
+  if (fVerbose==2)
+    ftxt.close();
   return;
 }
 //////////////////////////////////////////////////////////////////////////////////////////////////////////////