#include "TFile.h"
#include "TTree.h"
#include "TSystem.h"
-#include "Bytes.h"
+//#include "Bytes.h"
// --- Standard library ---
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <unistd.h>
-#include <ctype.h>
-#include <stdio.h>
-#include <stdlib.h>
+
#include <unistd.h>
-#include <string.h>
// --- AliRoot header files ---
#include "AliPHOSDigit.h"
//____________________________________________________________________________
AliPHOSRaw2Digits::AliPHOSRaw2Digits():TTask()
{
+ //As one can easily see, this is constructor.
fInName="";
fMK1 = 0x0123CDEF ;
fMK2 = 0x80708070 ;
fMK4 = 0x80618061 ;
fCKW = 0x4640E400 ;
fDebug = kFALSE; // Debug flag
- fToSplit = kFALSE ;
fIsInitialized = kFALSE ;
fTarget[0] = 0 ;
fTarget[1] = 0 ;
fHeaderFile = 0 ;
fDigitsFile = 0 ;
fPHOSHeader =0 ;
- fMaxPerFile = 20000 ;
+ fMaxPerFile = 20000 ; //Maximal number of events in root file.
fEvent = 0 ;
fctdb = 0;
}
//____________________________________________________________________________
- AliPHOSRaw2Digits::AliPHOSRaw2Digits(const char * filename,Bool_t toSplit):TTask("Default","")
+ AliPHOSRaw2Digits::AliPHOSRaw2Digits(const char * filename):TTask("Default","")
{
+ //this constructor should be normally used. Parameters: imput file
fInName=filename;
- fToSplit = toSplit ;
TString outname("") ;
- if(fToSplit)
- outname = "galice.root" ;
- else{
- outname =fInName ;
- outname.ToLower() ;
- outname.ReplaceAll(".fz",".root") ;
- outname.ReplaceAll(".gz","") ;
- }
+
+ outname =fInName ;
+ outname.ToLower() ;
+ outname.ReplaceAll(".fz",".root") ;
+ outname.ReplaceAll(".gz","") ;
+
SetTitle(outname) ;
fMK1 = 0x0123CDEF ;
fEvent = 0 ;
fctdb = 0;
}
+//____________________________________________________________________________
+AliPHOSRaw2Digits::AliPHOSRaw2Digits(AliPHOSRaw2Digits & r2d):TTask(r2d.GetName(), r2d.GetTitle())
+{
+ fInName=r2d.fInName ;
+
+ fMK1 = r2d.fMK1 ;
+ fMK2 = r2d.fMK2 ;
+ fMK3 = r2d.fMK3 ;
+ fMK4 = r2d.fMK4 ;
+ fCKW = r2d.fCKW ;
+ fDebug = kFALSE; // Debug flag
+ fIsInitialized = kFALSE ;
+ fTarget[0] = r2d.fTarget[0] ;
+ fTarget[1] = r2d.fTarget[1] ;
+ fTarget[2] = r2d.fTarget[2] ;
+ fDigits = r2d.fDigits ;
+ fPHOSHeader = r2d.fPHOSHeader ;
+ fHeaderFile = new TFile( (r2d.fHeaderFile)->GetName(), "new" ) ;
+ fDigitsFile = new TFile( (r2d.fDigitsFile)->GetName(), "new" ) ;
+ fMaxPerFile = r2d.fMaxPerFile ;
+ fEvent = r2d.fEvent ;
+ fctdb = new AliPHOSConTableDB( *(r2d.fctdb) ) ;
+}
//____________________________________________________________________________
AliPHOSRaw2Digits::~AliPHOSRaw2Digits()
{
+//destructor
if(fPHOSHeader)
fPHOSHeader->Delete() ;
if(fDigits){
ProcessRawFile() ;
- FinishRun() ;
}
//____________________________________________________________________________
Bool_t AliPHOSRaw2Digits::Init(void){
}
//____________________________________________________________________________
Bool_t AliPHOSRaw2Digits::StartRootFiles(void ){
- //Create PHOS geometry, sets magnetic field to zero,
- //create Generator - to store target position,
- //opens out file, creates TreeE
-
- //create gAlice if nececcary
- if(!gAlice)
- new AliRun("gAlice","The ALICE Off-line Simulation Framework") ;
-
- //Create PHOS
- if(!gAlice->GetModule("PHOS"))
- new AliPHOSv1("PHOS","GPS2") ;
-
- //Set Magnetic field
- gAlice->SetField(0,2);
-
- //Set positin of the virtex
- AliGenerator * gener = gAlice->Generator() ;
- if(!gener)
- gener = new AliGenBox(1);
- Float_t ox = fTarget[1];
- Float_t oy = fTarget[2]-460.;
- Float_t oz = fTarget[0];
- gener->SetOrigin(ox, oy, oz);
-
- //make directory
- Int_t nRootFile = (fEvent+1)/fMaxPerFile ;
- if(nRootFile){
- char dname[20];
- sprintf(dname,"%d",nRootFile) ;
- if(gSystem->AccessPathName(dname)) //strange return: 0 if exists
- if(gSystem->MakeDirectory(dname)!=0)
- Fatal("StartRootFiles","Can not make directory %s \n",dname) ;
+// //Create PHOS geometry, sets magnetic field to zero,
+// //create Generator - to store target position,
+// //opens out file, creates TreeE
+
+// //create gAlice if nececcary
+// if(!gAlice)
+// new AliRun("gAlice","The ALICE Off-line Simulation Framework") ;
+
+// //Create PHOS
+// if(!gAlice->GetModule("PHOS"))
+// new AliPHOSv1("PHOS","GPS2") ;
+
+// //Set Magnetic field
+// gAlice->SetField(0,2);
+
+// //Set positin of the virtex
+// AliGenerator * gener = gAlice->Generator() ;
+// if(!gener)
+// gener = new AliGenBox(1);
+// Float_t ox = fTarget[1];
+// Float_t oy = fTarget[2]+460.;
+// Float_t oz = fTarget[0];
+// gener->SetOrigin(ox, oy, oz);
+
+// //make directory
+// Int_t nRootFile = (fEvent+1)/fMaxPerFile ;
+// if(nRootFile){
+// char dname[20];
+// sprintf(dname,"%d",nRootFile) ;
+// if(gSystem->AccessPathName(dname)) //strange return: 0 if exists
+// if(gSystem->MakeDirectory(dname)!=0)
+// Fatal("StartRootFiles","Can not make directory %s \n",dname) ;
- if(!gSystem->ChangeDirectory(dname))
- Fatal("StartRootFiles","Can not cd to %s\n",dname) ;
- }
-
- // Create the output file
- TString outname("") ;
- if(strstr(GetTitle(),"root")){
- outname=GetTitle();
- }
- else{
- outname = fInName ;
- outname.ToLower() ;
- outname.ReplaceAll(".fz",".root") ;
- }
-
- fHeaderFile = new TFile(outname,"recreate");
- fHeaderFile->SetCompressionLevel(2);
+// if(!gSystem->ChangeDirectory(dname))
+// Fatal("StartRootFiles","Can not cd to %s\n",dname) ;
+// }
+
+// // Create the output file
+// TString outname("") ;
+// if(strstr(GetTitle(),"root")){
+// outname=GetTitle();
+// }
+// else{
+// outname = fInName ;
+// outname.ToLower() ;
+// outname.ReplaceAll(".fz",".root") ;
+// }
+
+// fHeaderFile = new TFile(outname,"recreate");
+// fHeaderFile->SetCompressionLevel(2);
- // Create the Root Trees
- gAlice->MakeTree("E") ;
+// // Create the Root Trees
- //Fill now TreeE
- Int_t splitlevel = 0 ;
- Int_t bufferSize = 32000 ;
- TBranch * headerBranch = gAlice->TreeE()->Branch("AliPHOSBeamTestEvent",
- "AliPHOSBeamTestEvent",
- &fPHOSHeader,bufferSize,splitlevel);
- headerBranch->SetName("AliPHOSBeamTestEvent") ;
-
- if(fToSplit){
- fDigitsFile = new TFile("PHOS.Digits.root","recreate") ;
- fDigitsFile->SetCompressionLevel(2) ;
- }
- return kTRUE ;
+// gime->MakeTree("E") ;
+
+// //Fill now TreeE
+// Int_t splitlevel = 0 ;
+// Int_t bufferSize = 32000 ;
+// TBranch * headerBranch = gAlice->TreeE()->Branch("AliPHOSBeamTestEvent",
+// "AliPHOSBeamTestEvent",
+// &fPHOSHeader,bufferSize,splitlevel);
+// headerBranch->SetName("AliPHOSBeamTestEvent") ;
+
+// // if(fToSplit){
+// // fDigitsFile = new TFile("PHOS.Digits.root","recreate") ;
+// // fDigitsFile->SetCompressionLevel(2) ;
+// // }
+ return kTRUE ;
}
//____________________________________________________________________________
Bool_t AliPHOSRaw2Digits::CloseRootFiles(void ){
//cleans everething to start next root file
+ if(fHeaderFile){
+ printf("writing gAlice \n") ;
+ fHeaderFile->cd() ;
+ gAlice->Write(0,TObject::kOverwrite);
+ gAlice->TreeE()->Write(0,TObject::kOverwrite);
+ }
delete gAlice ;
}
fEvent++ ;
}
+ CloseRootFiles() ;
fStatus = 1 ;
return kTRUE ;
}
+
//____________________________________________________________________________
-void AliPHOSRaw2Digits::Swab4(void *from, void *to, size_t nwords){
+void AliPHOSRaw2Digits::Swab4(void *from, void *to, size_t nwords)const
+{
// The function swaps 4 bytes: byte#3<-->byte#0, byte#2<-->byte#1
register char *pf=static_cast<char*>(from) ;
register char *pt=static_cast<char*>(to) ;
}
//____________________________________________________________________________
-void AliPHOSRaw2Digits::Swab2(void *from, void *to, size_t nwords)
-{ //The function swaps 2x2 bytes: byte#0<-->byte#1, byte#2<-->byte#3
+void AliPHOSRaw2Digits::Swab2(void *from, void *to, size_t nwords)const
+{
+ //The function swaps 2x2 bytes: byte#0<-->byte#1, byte#2<-->byte#3
register char *pf=static_cast<char*>(from) ;
register char *pt=static_cast<char*>(to);
register char c;
}
}
-//____________________________________________________________________________
-void AliPHOSRaw2Digits::FinishRun(){
- //Write geometry and header tree
- gAlice->Write(0,TObject::kOverwrite);
- gAlice->TreeE()->Write(0,TObject::kOverwrite);
-
-}
//____________________________________________________________________________
void AliPHOSRaw2Digits::WriteDigits(void){
//In this method we create TreeD, write digits and Raw2Digits to it
}
//____________________________________________________________________________
void AliPHOSRaw2Digits::Print(Option_t * option)const{
-
+ //prints current configuration and status.
printf("----------AliPHOSRaw2Digits---------- \n") ;
printf("Current input File: %s\n",fInName.Data()) ;