// --- ROOT system ---
-#include "TFile.h"
-#include "TROOT.h"
#include "TBenchmark.h"
+#include "TRandom.h"
// --- Standard library ---
// --- AliRoot header files ---
-#include "AliRun.h"
+#include "AliPHOSGeometry.h"
#include "AliPHOSDigit.h"
#include "AliPHOSGetter.h"
#include "AliPHOSHit.h"
AliPHOSSDigitizer::AliPHOSSDigitizer():TTask("","")
{
// ctor
- InitParameters() ;
+ fFirstEvent = fLastEvent = 0 ;
fDefaultInit = kTRUE ;
}
//____________________________________________________________________________
-AliPHOSSDigitizer::AliPHOSSDigitizer(const char * alirunFileName, const char * eventFolderName):
- TTask("PHOS"+AliConfig::fgkSDigitizerTaskName, alirunFileName),
+AliPHOSSDigitizer::AliPHOSSDigitizer(const char * alirunFileName,
+ const char * eventFolderName):
+ TTask("PHOS"+AliConfig::Instance()->GetSDigitizerTaskName(), alirunFileName),
fEventFolderName(eventFolderName)
{
// ctor
+ fFirstEvent = fLastEvent = 0 ; // runs one event by defaut
InitParameters() ;
Init();
fDefaultInit = kFALSE ;
}
//____________________________________________________________________________
-AliPHOSSDigitizer::AliPHOSSDigitizer(const AliPHOSSDigitizer & sd) {
+AliPHOSSDigitizer::AliPHOSSDigitizer(const AliPHOSSDigitizer & sd)
+ : TTask(sd)
+{
//cpy ctor
+ fFirstEvent = sd.fFirstEvent ;
+ fLastEvent = sd.fLastEvent ;
fA = sd.fA ;
fB = sd.fB ;
fPrimThreshold = sd.fPrimThreshold ;
}
+//____________________________________________________________________________
+AliPHOSSDigitizer::~AliPHOSSDigitizer() {
+ //dtor
+ AliPHOSGetter * gime =
+ AliPHOSGetter::Instance(GetTitle(),fEventFolderName.Data());
+ gime->PhosLoader()->CleanSDigitizer();
+}
//____________________________________________________________________________
void AliPHOSSDigitizer::Init()
{
//____________________________________________________________________________
void AliPHOSSDigitizer::Exec(Option_t *option)
{
- // Collects all hits in the same active volume into digit
+ // Steering method to produce summable digits for events
+ // in the range from fFirstEvent to fLastEvent.
+ // This range is optionally set by SetEventRange().
+ // if fLastEvent=-1 (by default), then process events until the end.
+ //
+ // Summable digit is a sum of all hits in the same active
+ // volume into digit
if (strstr(option, "print") ) {
Print() ;
if(strstr(option,"tim"))
gBenchmark->Start("PHOSSDigitizer");
- AliPHOSGetter * gime = AliPHOSGetter::Instance() ;
+ AliPHOSGetter * gime = AliPHOSGetter::Instance(GetTitle()) ;
//switch off reloading of this task while getting event
if (!fInit) { // to prevent overwrite existing file
return ;
}
-
- Int_t nevents = gime->MaxEvent() ;
+ if (fLastEvent == -1)
+ fLastEvent = gime->MaxEvent() - 1 ;
+ else
+ fLastEvent = TMath::Min(fFirstEvent, gime->MaxEvent()); // only ine event at the time
+ Int_t nEvents = fLastEvent - fFirstEvent + 1;
+
Int_t ievent ;
- for(ievent = 0; ievent < nevents; ievent++){
-
+ for (ievent = fFirstEvent; ievent <= fLastEvent; ievent++) {
gime->Event(ievent,"H") ;
-
TTree * treeS = gime->TreeS();
TClonesArray * hits = gime->Hits() ;
TClonesArray * sdigits = gime->SDigits() ;
if(strstr(option,"tim")){
gBenchmark->Stop("PHOSSDigitizer");
Info("Exec"," took %f seconds for SDigitizing %f seconds per event",
- gBenchmark->GetCpuTime("PHOSSDigitizer"), gBenchmark->GetCpuTime("PHOSSDigitizer")/nevents) ;
+ gBenchmark->GetCpuTime("PHOSSDigitizer"), gBenchmark->GetCpuTime("PHOSSDigitizer")/nEvents) ;
}
}
AliPHOSGetter * gime = AliPHOSGetter::Instance() ;
const TClonesArray * sdigits = gime->SDigits() ;
-
- TString message ;
- message = "\nAliPHOSSDigitiser: event " ;
- message += gAlice->GetEvNumber();
- message += "\n Number of entries in SDigits list " ;
- message += sdigits->GetEntriesFast() ;
- char * tempo = new char[8192];
+ Info( "\nPrintSDigits", "event # %d %d sdigits", gAlice->GetEvNumber(), sdigits->GetEntriesFast() ) ;
+
if(strstr(option,"all")||strstr(option,"EMC")){
//loop over digits
AliPHOSDigit * digit;
- message += "\nEMC sdigits\n" ;
- message += "\n Id Amplitude Time Index Nprim: Primaries list \n" ;
+ printf("\nEMC sdigits\n") ;
Int_t maxEmc = gime->PHOSGeometry()->GetNModules()*gime->PHOSGeometry()->GetNCristalsInModule() ;
Int_t index ;
for (index = 0 ; (index < sdigits->GetEntriesFast()) &&
((dynamic_cast<AliPHOSDigit *> (sdigits->At(index)))->GetId() <= maxEmc) ; index++) {
digit = dynamic_cast<AliPHOSDigit *>( sdigits->At(index) ) ;
- if(digit->GetNprimary() == 0)
- continue;
- sprintf(tempo, "\n%6d %8d %6.5e %4d %2d :",
- digit->GetId(), digit->GetAmp(), digit->GetTime(), digit->GetIndexInList(), digit->GetNprimary()) ;
- message += tempo ;
+ // if(digit->GetNprimary() == 0)
+ // continue;
+ printf("%6d %8d %6.5e %4d %2d :\n",
+ digit->GetId(), digit->GetAmp(), digit->GetTime(), digit->GetIndexInList(), digit->GetNprimary()) ;
Int_t iprimary;
for (iprimary=0; iprimary<digit->GetNprimary(); iprimary++) {
- sprintf(tempo, "%d ",digit->GetPrimary(iprimary+1) ) ;
- message += tempo ;
+ printf("%d ",digit->GetPrimary(iprimary+1) ) ;
}
}
}
//loop over CPV digits
AliPHOSDigit * digit;
-
- message += "CPV sdigits\n" ;
- message += "\n Id Amplitude Index Nprim: Primaries list \n" ;
+ printf("\nCPV sdigits\n") ;
Int_t maxEmc = gime->PHOSGeometry()->GetNModules()*gime->PHOSGeometry()->GetNCristalsInModule() ;
Int_t index ;
for (index = 0 ; index < sdigits->GetEntriesFast(); index++) {
digit = dynamic_cast<AliPHOSDigit *>( sdigits->At(index) ) ;
if(digit->GetId() > maxEmc){
- sprintf(tempo, "\n%6d %8d %4d %2d :",
+ printf("\n%6d %8d %4d %2d :",
digit->GetId(), digit->GetAmp(), digit->GetIndexInList(), digit->GetNprimary()) ;
- message += tempo ;
Int_t iprimary;
for (iprimary=0; iprimary<digit->GetNprimary(); iprimary++) {
- sprintf(tempo, "%d ",digit->GetPrimary(iprimary+1) ) ;
- message += tempo ;
+ printf("%d ",digit->GetPrimary(iprimary+1) ) ;
}
}
}
}
- delete []tempo ;
- Info("PrintSDigits", message.Data() ) ;
}
//____________________________________________________________________________
void AliPHOSSDigitizer::Unload() const
{
+ // Unloads the objects from the folder
AliPHOSGetter * gime = AliPHOSGetter::Instance() ;
AliPHOSLoader * loader = gime->PhosLoader() ;
loader->UnloadHits() ;