-#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
-/*
-Before running this macro it is necessary comment the following line of the method
-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();
+ gAlice=rl->GetAliRun();
+ 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->GetDetTypeSim()->SetTreeAddressD(TD,"ITS");
- 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();
+ 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;
}