/* $Id$ */
+/* History of cvs commits:
+ *
+ * $Log$
+ */
+
//_________________________________________________________________________
// This is a TTask that makes SDigits out of Hits
// The name of the TTask is also the title of the branch that will contain
// --- ROOT system ---
#include "TBenchmark.h"
-#include "TRandom.h"
+ //#include "TObjectTable.h"
// --- Standard library ---
// --- AliRoot header files ---
+#include "AliLog.h"
#include "AliPHOSGeometry.h"
#include "AliPHOSDigit.h"
#include "AliPHOSGetter.h"
#include "AliPHOSHit.h"
#include "AliPHOSSDigitizer.h"
+ //#include "AliMemoryWatcher.h"
ClassImp(AliPHOSSDigitizer)
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 ;
{
//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());
+ AliPHOSGetter * gime =
+ AliPHOSGetter::Instance();
+ gime->PhosLoader()->CleanSDigitizer();
+}
//____________________________________________________________________________
void AliPHOSSDigitizer::Init()
{
gime->PostSDigitizer(this);
gime->PhosLoader()->GetSDigitsDataLoader()->GetBaseTaskLoader()->SetDoNotReload(kTRUE);
-
+
}
//____________________________________________________________________________
//____________________________________________________________________________
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() ;
//switch off reloading of this task while getting event
if (!fInit) { // to prevent overwrite existing file
- Error( "Exec", "Give a version name different from %s", fEventFolderName.Data() ) ;
+ AliError( Form("Give a version name different from %s", fEventFolderName.Data()) ) ;
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++){
- gime->Event(ievent,"H") ;
+ //AliMemoryWatcher memwatcher;
+ for (ievent = fFirstEvent; ievent <= fLastEvent; ievent++) {
+ gime->Event(ievent,"H") ;
TTree * treeS = gime->TreeS();
TClonesArray * hits = gime->Hits() ;
TClonesArray * sdigits = gime->SDigits() ;
for (iprim = 0 ; iprim < nPrim ; iprim ++) {
//=========== Get the PHOS branch from Hits Tree for the Primary iprim
gime->Track(iprim) ;
- Int_t i;
- for ( i = 0 ; i < hits->GetEntries() ; i++ ) {
- AliPHOSHit * hit = dynamic_cast<AliPHOSHit *>(hits->At(i)) ;
- // Assign primary number only if contribution is significant
+ Int_t i;
+ for ( i = 0 ; i < hits->GetEntries() ; i++ ) {
+ AliPHOSHit * hit = dynamic_cast<AliPHOSHit *>(hits->At(i)) ;
+ // Assign primary number only if contribution is significant
if( hit->GetEnergy() > fPrimThreshold)
new((*sdigits)[nSdigits]) AliPHOSDigit(hit->GetPrimary(),hit->GetId(),
Digitize(hit->GetEnergy()), hit->GetTime()) ;
nSdigits++ ;
- }
+ }
} // loop over iprim
//Next - SDigitizer
gime->WriteSDigitizer("OVERWRITE");
-
+ //gObjectTable->Print() ;
+
if(strstr(option,"deb"))
PrintSDigits(option) ;
- }
+
+ //memwatcher.Watch(ievent);
+ }// event loop
Unload();
- gime->PhosLoader()->GetSDigitsDataLoader()->GetBaseTaskLoader()->SetDoNotReload(kTRUE);
+ // gime->PhosLoader()->GetSDigitsDataLoader()->GetBaseTaskLoader()->SetDoNotReload(kTRUE);
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) ;
}
+
+ //TFile f("out.root","RECREATE");
+ //memwatcher.WriteToFile();
+ //f.Close();
}
//__________________________________________________________________
-void AliPHOSSDigitizer::Print()const
+void AliPHOSSDigitizer::Print(const Option_t *)const
{
// Prints parameters of SDigitizer
Info("Print", "\n------------------- %s -------------", GetName() ) ;
digit = dynamic_cast<AliPHOSDigit *>( sdigits->At(index) ) ;
// if(digit->GetNprimary() == 0)
// continue;
- printf("%6d %8d %6.5e %4d %2d :",
+ 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++) {