]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ITS/AliITSDDLRawData.C
Bug fix for SDD test beam simulation.
[u/mrichter/AliRoot.git] / ITS / AliITSDDLRawData.C
index de88a043743f179aee88e240a786b78da1e8888f..db50773adba07f3fa8c8353f17e62ae1f2911b5c 100644 (file)
@@ -1,7 +1,9 @@
-#if !defined(__CINT__) || defined(__MAKECINT__)
-
-#include <iostream.h>
+#if !defined(__CINT__)
+#include <Riostream.h>
 #include "AliITSDDLRawData.h"
+#include "AliRunLoader.h"
+#include "AliLoader.h"
+#include "AliITS.h"
 #endif
 
 /*
@@ -10,83 +12,75 @@ AddDigit in the class AliITSsimulationSDD
 //if( fResponse->Do10to8() ) signal = Convert8to10( signal ); 
 In this way the amplitude value for signal coming from SDD takes only 8 bits and not 10.
 */
+//DigitsFile is the input file that contains digits
 
-void AliITSDDLRawData(char* DigitsFile="galice.root"){
-  #ifdef __NOCOMPILED__
-  if (gClassTable->GetID("AliRun") < 0) {
-    gROOT->LoadMacro("loadlibs.C");
-    loadlibs();
-  }
-  else {
-#endif
-    if(gAlice){
-      delete gAlice;
-      gAlice=0;
-    }
-#ifdef __NOCOMPILED__
-  }
-#endif
-  // Connect the Root input file containing Geometry, Kine and Hits
-  // galice.root file by default
-  char* filename="galice.root";
-  // TFile *file = (TFile*)gROOT->GetListOfFiles()->FindObject(filename);
-  TFile *file = (TFile*)gROOT->GetListOfFiles()->FindObject(DigitsFile);
-  if (!file){
-    //    file = new TFile(filename);
-    file = new TFile(DigitsFile);
-    cout<<"NEW FILE CREATED !!!"<<endl;
-  }//end if
-  file->ls();
-  // Get AliRun object from file
-  if (!gAlice) {
-    gAlice = (AliRun*)file->Get("gAlice");
-    if (gAlice)cout<<"AliRun object found on file "<<filename<<endl;
-    if(!gAlice){
-      cout<<"Can't access AliRun object on file "<<filename<<endl;
-      cout<<"Macro execution stopped!!!"<<endl;
-    }
+void AliITSDDLRawData(Int_t eventNumber=0){
+
+  Int_t spdLDCs=2;
+  Int_t sddLDCs=4;
+  Int_t ssdLDCs=2;
+  Int_t eventn=0;
+  const char * inFile_new = "galice.root";
+  AliRunLoader *rl = AliRunLoader::Open(inFile_new,"Event","read");
+  rl->LoadgAlice();
+  Int_t nevents=rl->GetNumberOfEvents();
+  cout<<"Number of Events:"<<nevents<<endl;
+  while (eventNumber<=0 || eventNumber>nevents){
+    cout<<"Insert the event number:";
+    cin>>eventNumber;
+    cout<<endl;
   }
-  //  gAlice->SetTreeDFileName("digits.root");
-  gAlice->SetTreeDFileName(DigitsFile);
-  Int_t nparticles = gAlice->GetEvent(0);
-  // 
-  // ITS
-  AliITS *ITS  = (AliITS*)gAlice->GetModule("ITS");
+  rl->GetEvent(eventNumber-1);
+  AliLoader *itsloader=rl->GetLoader("ITSLoader");
+  itsloader->LoadDigits();
+  TTree *TD=itsloader->TreeD();
+  gAlice=rl->GetAliRun(); 
+  if(!gAlice){
+    cout<<"gAlice is null"<<endl;
+    return;
+  } 
+  AliITS *ITS  = (AliITS*)gAlice->GetDetector("ITS");
+
   Int_t nmodules;
   ITS->InitModules(-1,nmodules);
+  ITS->SetTreeAddressD(TD);
 
-  cout<<"Number of ITS modules= "<<nmodules<<endl;
-  //cout<<"Filling modules... It takes a while, now. Please be patient"<<endl;
-  //ITS->FillModules(0,0,nmodules," "," ");
-  //cout<<"ITS modules .... DONE!"<<endl;
-  // DIGITS
-  TTree *TD = gAlice->TreeD();
-
-  AliITSDDLRawData *util=new AliITSDDLRawData();
-  TStopwatch timer;
-  
-  //SILICON PIXEL DETECTOR
-  cout<<"Formatting data for SPD"<<endl;
-  timer.Start();
-  util->RawDataSPD(ITS,TD);
-  timer.Stop();
-  timer.Print();
-  //util->TestFormat();
+    AliITSDDLRawData *util=new AliITSDDLRawData();
+    //Verbose level
+    // 0: Silent
+    // 1: cout messages
+    // 2: txt files with digits 
+    //BE CAREFUL, verbose level 2 MUST be used only for debugging and
+    //it is highly suggested to use this mode only for debugging digits files
+    //reasonably small, because otherwise the size of the txt files can reach
+    //quickly several MB wasting time and disk space.
+    util->SetVerbose(0);
+    TStopwatch timer;
+    
+    //SILICON PIXEL DETECTOR
+    cout<<"Formatting data for SPD"<<endl;
+    timer.Start();
+    util->RawDataSPD(ITS,TD,spdLDCs,eventNumber);
+    timer.Stop();
+    timer.Print();
+    //ONLY FOR DEBUGGING 
+    //    util->TestFormat(eventNumber);
     
-  //SILICON DRIFT DETECTOR
-  cout<<"Formatting data for SDD"<<endl;
-  timer.Start();
-  util->RawDataSDD(ITS,TD);
-  timer.Stop();
-  timer.Print();
-  
-  //SILICON STRIP DETECTOR
-  cout<<"Formatting data for SSD"<<endl;
-  timer.Start();
-  util->RawDataSSD(ITS,TD);
-  timer.Stop();
-  timer.Print();
-  
-  delete util;
-  return;
+    //SILICON DRIFT DETECTOR
+    cout<<"Formatting data for SDD"<<endl;
+    timer.Start();
+    util->RawDataSDD(ITS,TD,sddLDCs,eventNumber);
+    timer.Stop();
+    timer.Print();
+    
+    //SILICON STRIP DETECTOR
+    cout<<"Formatting data for SSD"<<endl;
+    timer.Start();
+    util->RawDataSSD(ITS,TD,ssdLDCs,eventNumber);
+    timer.Stop();
+    timer.Print();
+    
+    delete util;
+
+    return;
 }