]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - T0/AliT0CalibLaserData.cxx
no cout anymore, please use AliDebug
[u/mrichter/AliRoot.git] / T0 / AliT0CalibLaserData.cxx
index d2c386ae19ddebb463fcb6dfa839506becee3c1e..5988fd01b81ec3abfe3c6a6bbe4b92a0e56c4022 100644 (file)
@@ -1,3 +1,27 @@
+/**************************************************************************
+ * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+ *                                                                        *
+ * Author: The ALICE Off-line Project.                                    *
+ * Contributors are mentioned in the code where appropriate.              *
+ *                                                                        *
+ * Permission to use, copy, modify and distribute this software and its   *
+ * documentation strictly for non-commercial purposes is hereby granted   *
+ * without fee, provided that the above copyright notice appears in all   *
+ * copies and that both the copyright notice and this permission notice   *
+ * appear in the supporting documentation. The authors make no claims     *
+ * about the suitability of this software for any purpose. It is          *
+ * provided "as is" without express or implied warranty.                  *
+ **************************************************************************/
+
+/* $Id:  */
+
+//____________________________________________________________________
+//                                                                          
+// T0 - T0. 
+//
+// This class privides GIU service for reading RAW data from Laser
+// during electronics test 
+//                                                       
 #include "TH1F.h"
 #include "TH2F.h"
 #include "TMap.h"
 #include "TBranch.h"
 #include "AliT0RawReader.h"
 #include "TGLabel.h"
-#include <iostream.h>
+#include "TGFileDialog.h"
+//#include <iostream.h>
 
 #include "AliT0CalibLaserData.h"
 
 #include "AliCDBManager.h"
 #include "AliRawReader.h"
-#include "AliRawReaderDate.h"
+#include "AliRawReaderRoot.h"
 #include "AliT0LookUpValue.h"
+#include "AliT0LookUpKey.h"
 #include "AliT0Parameters.h"
 #include "AliT0RawReader.h"
-#include "AliLog.h"              
 
 ClassImp(AliT0CalibLaserData)
-
+  //const char *fFileName;
 AliT0CalibLaserData::AliT0CalibLaserData() : TObject(),
-                                        fRunNumber(905)
+                                            fTEntry(0),
+                                            fFileName(" ")
+  
 {
 //
 }
@@ -43,16 +70,19 @@ AliT0CalibLaserData &AliT0CalibLaserData::operator =(const AliT0CalibLaserData&
   return *this;
 }
 //________________________________________________________________
-//AliT0CalibLaserData::~AliT0CalibLaserData()
-//{
+AliT0CalibLaserData::~AliT0CalibLaserData()
+{
   //
-//}
+}
 */
 //________________________________________________________________
 
-void AliT0CalibLaserData::ReadHistSize(Int_t rNumber)
+void AliT0CalibLaserData::ReadHistSize()
 {
-    fRunNumber = rNumber;
+  //build GUI frame for reading:
+  // - run number
+  // - histograms rates
+
     
     TGMainFrame* fMain = new TGMainFrame(0,1500,1500);
     fMain->SetLayoutManager( new TGMatrixLayout(fMain,7,7) );
@@ -80,9 +110,9 @@ void AliT0CalibLaserData::ReadHistSize(Int_t rNumber)
     fMain->AddFrame( new TGLabel(fMain, "LED - CFD" ) );
     fEntries[3] = new TGNumberEntry(fMain, 0);
     fMain->AddFrame(fEntries[3]);
-    fEntries[4] = new TGNumberEntry(fMain, 10000);
+    fEntries[4] = new TGNumberEntry(fMain, 1000);
     fMain->AddFrame(fEntries[4]);
-    fEntries[5] = new TGNumberEntry(fMain, 10000);
+    fEntries[5] = new TGNumberEntry(fMain, 1000);
     fMain->AddFrame(fEntries[5]);
     fMain->AddFrame( new TGLabel(fMain, " ") );
     fMain->AddFrame( new TGLabel(fMain, " ") );
@@ -96,11 +126,11 @@ void AliT0CalibLaserData::ReadHistSize(Int_t rNumber)
     fEntries[8] = new TGNumberEntry(fMain, 700);
     fMain->AddFrame(fEntries[8]);
 // CFD axis Y 
-   fEntries[9] = new TGNumberEntry(fMain, 0);
+   fEntries[9] = new TGNumberEntry(fMain, 2000.5);
     fMain->AddFrame(fEntries[9]);
-    fEntries[10] = new TGNumberEntry(fMain, 10000);
+    fEntries[10] = new TGNumberEntry(fMain, 3000.5);
     fMain->AddFrame(fEntries[10]);
-    fEntries[11] = new TGNumberEntry(fMain, 10000);
+    fEntries[11] = new TGNumberEntry(fMain, 1000);
     fMain->AddFrame(fEntries[11]);
 //
     fMain->AddFrame( new TGLabel(fMain, "CFD vs LED-CFD " ) );
@@ -112,18 +142,19 @@ void AliT0CalibLaserData::ReadHistSize(Int_t rNumber)
     fEntries[14] = new TGNumberEntry(fMain, 500);
     fMain->AddFrame(fEntries[14]);
 // CFD axis Y
-    fEntries[15] = new TGNumberEntry(fMain, 3900);
+    fEntries[15] = new TGNumberEntry(fMain, 2000);
     fMain->AddFrame(fEntries[15]);
-    fEntries[16] = new TGNumberEntry(fMain, 4100);
+    fEntries[16] = new TGNumberEntry(fMain, 3000);
     fMain->AddFrame(fEntries[16]);
-    fEntries[17] = new TGNumberEntry(fMain, 200);
+    fEntries[17] = new TGNumberEntry(fMain, 1000);
     fMain->AddFrame(fEntries[17]);
  
-   fMain->AddFrame( new TGLabel(fMain, " Number of run") );
-    fEntries[18] = new TGNumberEntry(fMain, 905);
-     fMain->AddFrame(fEntries[18]);
-    
-    for ( int i=0; i<19; i++ ) fEntries[i]->SetWidth(70);
+   fMain->AddFrame( new TGLabel(fMain, " File name") );
+   fTEntry = new TGTextEntry(fMain,"");
+   fMain->AddFrame(fTEntry);
+   
+   for ( int i=0; i<18; i++ ) fEntries[i]->SetWidth(70);
+   fTEntry->SetWidth(80);
     //    printf( "Max Length %d\n", fEntries[0]->GetMaxWidth() );
 
     TGTextButton *fOk = new TGTextButton(fMain, "OK");
@@ -139,28 +170,31 @@ void AliT0CalibLaserData::ReadHistSize(Int_t rNumber)
     
 void AliT0CalibLaserData::DoOk()
 {
-    printf("it worked !\n");
-    //    delete fMain;
-    fRunNumber = Int_t (fEntries[18]->GetNumber());
-    cout<<" RUN NUMBER "<<fRunNumber<<endl;
-    for( int i=0; i<18; i++ ) fHistLimits[i] = fEntries[i]->GetNumber();
-    for( int i=0; i<18; i++ ) cout<<fHistLimits[i]<<" ";
-    cout<<endl;
-    ReadData();
-
+  
+  fFileName = (fTEntry->GetText());
+  //OpenFile();
+  printf(" DoOK >>  File %s\n",fFileName);
+  for( int i=0; i<18; i++ ) 
+    fHistLimits[i] = fEntries[i]->GetNumber();
+  
+  ReadData();
 }
 
 void AliT0CalibLaserData::ReadData()
 {
+  // reading RAW data from test LCS
+  // filling histograms
+  // fillinf tree
+  
+  
+  TH1F *hChannel[105];  TH1F *hQTC[24];  
+  TH2F *hCFDvsQTC[24]; TH2F *hCFDvsLED[24]; TH1F *h1CFDminLED[24];
 
-  TH1F *hChannel[105];  TH1F *hQTC[12];  
-  TH2F *hCFD_QTC[12]; TH2F *hCFD_LED[12]; TH1F *h1CFD_LED[12];
-  TH1F *hmpd[12];
-  Int_t allData[110][20];
+  Int_t allData[110][5];
   Int_t numberOfHits[105];
   
-  Char_t  buf1[20], buf2[20], buf3[20], buf4[20],  buf7[20];
-  
+  Char_t  buf1[20], buf2[20], buf3[20], buf4[20], buf7[20];
+
   TTree* digitsTree = new TTree("testData","Tree of test data Digits");
   TBranch *b[106];
   
@@ -183,54 +217,54 @@ void AliT0CalibLaserData::ReadData()
       if(lookkey){
        Int_t key=lookkey->GetKey();
        names[key]=lookkey->GetChannelName();
-       //      cout<<lookkey->GetKey()<<" "<<lookkey->GetChannelName()<<" trm "<<lookvalue->GetTRM()<<" tdc "<<lookvalue->GetTDC()<<" chain  "<<lookvalue->GetChain()<<" channel "<<lookvalue->GetChannel()<<endl;
-       hChannel[key] = new TH1F(names[key].Data(),names[key].Data(),30000,0,30000);
+       if(names[key].Contains("QT0"))
+         hChannel[key] = new TH1F(names[key].Data(),names[key].Data(),1000,3000,5000);
+       else
+         hChannel[key] = new TH1F(names[key].Data(),names[key].Data(),1000,2000,3000);
+       
        //      hitsname="xHits" + names[key];
        //      hNumHits[key] = new TH1F(hitsname.Data(),hitsname.Data(),50,-0.25,24.25);
        type =names[key] + "/I";
        b[key]=digitsTree->Branch(names[key].Data(),&channels[key], type);
       }
       else
-       {cout<<iline<<" no such value "<<endl;}
+       {printf(" no such value %i \n", iline);}
       
     } 
-  for(Int_t ic=0; ic<12; ic++) {
+  for(Int_t ic=0; ic<24; ic++) {
     {
       sprintf(buf1,"QTC%i",ic+1);
       sprintf(buf2,"CFDvsQTC%i",ic+1);
       sprintf(buf3,"CFDvsLED%i",ic+1);
-      sprintf(buf4,"LED_CFD%i",ic+1);
+      sprintf(buf4,"LEDminCFD%i",ic+1);
       sprintf(buf7,"mpd%i",ic+1);
       
       hQTC[ic] = new TH1F(buf1,"QTC",(Int_t)fHistLimits[2],fHistLimits[0],fHistLimits[1]);
-       h1CFD_LED[ic] = new TH1F(buf4,"LED - CFD",(Int_t)fHistLimits[5],fHistLimits[3],fHistLimits[4]);
-       hmpd[ic] = new TH1F(buf7,"mpd",20000,-10000.0,10000.0);
-      hCFD_QTC[ic] = new TH2F(buf2,"CFD vs     QTC",
-                             (Int_t)fHistLimits[8],fHistLimits[6],fHistLimits[7],
-                             (Int_t)fHistLimits[11],fHistLimits[9],fHistLimits[10]);
-      hCFD_LED[ic] = new TH2F(buf3,"CFD vs LED-CFD",
-                             (Int_t)fHistLimits[14],fHistLimits[12],fHistLimits[13],
-                             (Int_t)fHistLimits[17],fHistLimits[15],fHistLimits[16]);
+      h1CFDminLED[ic] = new TH1F(buf4,"LED - CFD",(Int_t)fHistLimits[5],fHistLimits[3],fHistLimits[4]);
       
+      hCFDvsQTC[ic] = new TH2F(buf2,"CFD vs    QTC",
+                              (Int_t)fHistLimits[8],fHistLimits[6],fHistLimits[7],
+                              (Int_t)fHistLimits[11],fHistLimits[9],fHistLimits[10]);
+      hCFDvsLED[ic] = new TH2F(buf3,"CFD vs LED-CFD",
+                              (Int_t)fHistLimits[14],fHistLimits[12],fHistLimits[13],
+                              (Int_t)fHistLimits[17],fHistLimits[15],fHistLimits[16]);
+
       
     }
 
 
   }
-      //   cout<<" hist created "<<endl;
   
   TH1F*hEffCFD= new TH1F("hEffCFD","Effeciency",50,-0.25,24.25);
   TH1F*hEffLED= new TH1F("hEffLED","Effeciency",50,-0.25,24.25);
   TH1F*hEffQT0= new TH1F("hEffQT0","Effeciency",50,-0.25,24.25);
   TH1F*hEffQT1= new TH1F("hEffQT1","Effeciency",50,-0.25,24.25);
-  
-  
-  Char_t filename[100];
-  sprintf(filename,"/home/t0/alice/testSep07/raw/t0%i.001.raw",fRunNumber);
-  AliRawReader *reader = new AliRawReaderDate(filename);
-  if(!reader) AliFatal(Form("Can not opne file ",filename));
-  // AliRawReader *reader = new AliRawReaderFile();
-  reader->LoadEquipmentIdsMap("T0map.txt");
+
+      
+     // Char_t filename[80];
+  //     sprintf(filename,"t0%i.raw",fRunNumber);
+  AliRawReader *reader = new AliRawReaderRoot(fFileName);
+   reader->LoadEquipmentIdsMap("T0map.txt");
   //    reader->RequireHeader(kFALSE);
   reader->RequireHeader(kTRUE);
   AliT0RawReader *start = new AliT0RawReader(reader);
@@ -241,41 +275,59 @@ void AliT0CalibLaserData::ReadData()
       numberOfHits[i0]=0;
     }
   Int_t event=0;
-
+  
   while (reader->NextEvent()) {
     start->Next();
     for (Int_t i=0; i<105; i++) {
-      for (Int_t iHit=0; iHit<20; iHit++) 
+      for (Int_t iHit=0; iHit<5; iHit++) 
        {
          allData[i][iHit]= start->GetData(i,iHit);
        }
     }
     
-    if(event%1000 == 0) printf("Event:%d\n",event);
+    // if(event%1000 == 0) 
+    printf("Event:%d\n",event);
     
-    //        if(event > 100000) break;
+    //          if(event > 200000) break;
     
-
     for (Int_t it = 0; it<24; it=it+2)
       {
-       for (Int_t iHit=0; iHit<20; iHit++)
+       for (Int_t iHit=0; iHit<5; iHit++)
          {
            if(allData[it+25][iHit] != 0 && allData[it+26][iHit] !=0)
              {
                Int_t cc=it/2;
                hQTC[cc]->Fill(allData[it+25][iHit]-allData[it+26][iHit]);
-               hmpd[cc]->Fill(allData[it+26][iHit]-allData[it+25][iHit]);
-               if(allData[cc+1][iHit] != 0 ) hCFD_QTC[cc]->Fill(allData[it+25][iHit]-allData[it+26][iHit],allData[cc+1][iHit]-allData[0][0]);
+               if(allData[cc+1][iHit] != 0 ) hCFDvsQTC[cc]->Fill(allData[it+25][iHit]-allData[it+26][iHit],allData[cc+1][iHit]-allData[0][0]);
                if(allData[cc+1][iHit] != 0 && allData[cc+13][iHit]!=0 ) 
                  {
-                   hCFD_LED[cc]->Fill(allData[cc+13][iHit]-allData[cc+1][iHit],allData[cc+1][iHit]-allData[0][0]);  
-                   h1CFD_LED[cc]->Fill(allData[cc+13][iHit]-allData[cc+1][iHit]);
+                   hCFDvsLED[cc]->Fill(allData[cc+13][iHit]-allData[cc+1][iHit],allData[cc+1][iHit]-allData[0][0]);  
+                   h1CFDminLED[cc]->Fill(allData[cc+13][iHit]-allData[cc+1][iHit]);
                  }
              }
          }
       }
+    for (Int_t it = 24; it<48; it=it+2)
+      {
+       for (Int_t iHit=0; iHit<5; iHit++)
+         {
+           if(allData[it+57][iHit] != 0 && allData[it+58][iHit] !=0)
+             {
+               Int_t cc=(Int_t)(it/2.0);
+               hQTC[cc]->Fill(allData[it+57][iHit]-allData[it+58][iHit]);
+               //                  hmpd[cc]->Fill(allData[it+26][iHit]-allData[it+25][iHit]);
+             if(allData[cc+1][iHit] != 0 ) hCFDvsQTC[cc]->Fill(allData[it+25][iHit]-allData[it+26][iHit],allData[cc+45][iHit]-allData[0][0]);
+             if(allData[cc+57][iHit] != 0 && allData[cc+45][iHit]!=0 ) 
+               {
+                 hCFDvsLED[cc]->Fill(allData[cc+57][iHit]-allData[cc+45][iHit],allData[cc+1][iHit]-allData[0][0]);  
+                 h1CFDminLED[cc]->Fill(allData[cc+57][iHit]-allData[cc+45][iHit]);
+               }
+             }
+       }
+      }
+    
     
-    for (Int_t iHit=0; iHit<20; iHit++) 
+    for (Int_t iHit=0; iHit<5; iHit++) 
       {
        
        for(Int_t ik=1; ik<105; ik++)
@@ -288,31 +340,30 @@ void AliT0CalibLaserData::ReadData()
                channels[ik] = allData[ik][iHit] - allData[0][0];
              }
          }
-       //      digitsTree->Fill();   
+             digitsTree->Fill();   
       }
-    
+
     event++;
     
   } //event
-  
-  
+
+
   if (event>1)
     {
-      cout<<"efficiency for "<<event<<" events"<<endl;
+      printf("efficiency for %i events \n",event);
       for (Int_t i0=1; i0<13;  i0++)
        {
-         
-         cout<<names[i0].Data()<<" "<<Float_t(numberOfHits[i0])/Float_t(event)<<" ";
-         cout<<names[i0+13].Data()<<" "<<Float_t(numberOfHits[i0])/Float_t(event)<<" ";
-         cout<<names[i0+57].Data()<<" "<<Float_t(numberOfHits[i0])/Float_t(event)<<" ";
-         cout<<names[i0+69].Data()<<" "<<Float_t(numberOfHits[i0])/Float_t(event)<<endl;
+         printf("%s  %f  %s  %f %s  %f  %s  %f \n",
+                names[i0].Data(), Float_t(numberOfHits[i0])/Float_t(event),
+                names[i0+13].Data(),Float_t(numberOfHits[i0+13])/Float_t(event),
+                names[i0+57].Data(),Float_t(numberOfHits[i0+57])/Float_t(event),
+                names[i0+69].Data(),Float_t(numberOfHits[i0+69])/Float_t(event));
          
          hEffCFD->Fill(i0,Float_t(numberOfHits[i0])  / Float_t(event));
          hEffLED->Fill(i0,Float_t(numberOfHits[i0+13]) / Float_t(event));
          hEffCFD->Fill(i0+12,Float_t(numberOfHits[i0+57]) /Float_t(event));
          hEffLED->Fill(i0+12,Float_t(numberOfHits[i0+69]) /Float_t(event));
        }
-      cout<<endl;
       
       for (Int_t i0=0; i0<24;  i0=i0+2)
        {
@@ -320,43 +371,54 @@ void AliT0CalibLaserData::ReadData()
          hEffQT0->Fill(i0, Float_t (numberOfHits[i0]+26) / Float_t(event));
          hEffQT1->Fill((i0+12), Float_t (numberOfHits[i0]+81) /  Float_t(event));
          hEffQT0->Fill((i0+12), Float_t (numberOfHits[i0]+82) /  Float_t(event));
-         cout<<names[i0+25].Data()<<" "<<Float_t(numberOfHits[i0+25])/Float_t(event)<<" ";
-         cout<<names[i0+26].Data()<<" "<<Float_t(numberOfHits[i0+26])/Float_t(event)<<" ";
-         cout<<names[i0+81].Data()<<" "<<Float_t(numberOfHits[i0]+81)/Float_t(event)<<" ";
-         cout<<names[i0+82].Data()<<" "<<Float_t(numberOfHits[i0]+82)/Float_t(event)<<endl;
 
-         
+         printf("%s  %f  %s  %f %s  %f  %s  %f \n",
+                names[i0+25].Data(), Float_t(numberOfHits[i0+25])/Float_t(event),
+                names[i0+26].Data(),Float_t(numberOfHits[i0+26])/Float_t(event),
+                names[i0+81].Data(),Float_t(numberOfHits[i0+81])/Float_t(event),
+                names[i0+82].Data(),Float_t(numberOfHits[i0+82])/Float_t(event));
        }
     }        
   
-  
-  Char_t filehist[100]; 
-   sprintf(filehist,"/home/t0/alice/testSep07/tree/t0tree%i.root",fRunNumber);
-  //   sprintf(filehist,"test.root");
-  TFile *hist = new TFile(filehist,"RECREATE");
-  cout<<" writing hist in file "<<filehist<<endl;
-  
-  //  digitsTree->Write("",TObject::kOverwrite);
-  
-  hEffCFD->Write();
-  hEffLED->Write();
-  hEffQT0->Write();
-  hEffQT1->Write();
-  
-  for(Int_t ik=0; ik<105; ik++) {      
-    if (hChannel[ik]->GetEntries()>0 ) hChannel[ik] ->Write();
-  }
-  for (Int_t i=0; i<12; i++)
-    {
-      hQTC[i]->Write();
-      hmpd[i]->Write();
-      hCFD_QTC[i]->Write();
-      hCFD_LED[i]->Write();
-      h1CFD_LED[i]->Write();
-    }
-  
 
-  hist->Close();   
-  cout<<" hist in file"<<endl;
+  Char_t filehist[40]; 
+  sprintf(filehist,"t0tree%s",fFileName);
+  //  sprintf(filehist,"test.root",runNumber);
+     TFile *hist = new TFile(filehist,"RECREATE");
+     hist->cd();
+     //  digitsTree->Write("",TObject::kOverwrite);
+     
+     hEffCFD->Write();
+     hEffLED->Write();
+     hEffQT0->Write();
+      hEffQT1->Write();
+      
+      for(Int_t ik=0; ik<105; ik++)    hChannel[ik] ->Write();
+      
+      for (Int_t i=0; i<24; i++)
+       {
+         hQTC[i]->Write();
+         hCFDvsQTC[i]->Write();
+         hCFDvsLED[i]->Write();
+         h1CFDminLED[i]->Write();
+       }
+      
 }
+
+void AliT0CalibLaserData::OpenFile()
+{
+
+const char *ft[]={"T0 raw files","*.root","All files","*",0,0};
+  TString dir(".");
+  TGFileInfo fi; fi.fFileTypes=ft; fi.fIniDir=StrDup(dir);
+  new TGFileDialog(gClient->GetRoot(), 0x0, kFDOpen, &fi);
+  if(!fi.fFilename) return;
+  // fFileName =*( fi.fFilename);
+  fFileName = fi.fFilename;
+  printf(" AliT0CalibLaserData::OpenFile %s %s\n",fi.fFilename, fFileName );
+  //  if(gFile){ gFile->Close(); gFile=0;}
+
+  // gFile=TFile::Open(fi.fFilename);
+
+}
+