X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=PHOS%2FAliPHOSSDigitizer.cxx;h=cd106de44ec39278d4c383a9ab8d83d3b03cc5cf;hb=eea478d336f5bd7c271e88819a26d882eb4f45d4;hp=112468bf234ca997b67723d21616465abbf44543;hpb=e957fea89c462908a01dcfa4f611e99a98080071;p=u%2Fmrichter%2FAliRoot.git diff --git a/PHOS/AliPHOSSDigitizer.cxx b/PHOS/AliPHOSSDigitizer.cxx index 112468bf234..cd106de44ec 100644 --- a/PHOS/AliPHOSSDigitizer.cxx +++ b/PHOS/AliPHOSSDigitizer.cxx @@ -52,16 +52,18 @@ // --- 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) @@ -70,17 +72,19 @@ 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 ; @@ -92,6 +96,8 @@ AliPHOSSDigitizer::AliPHOSSDigitizer(const AliPHOSSDigitizer & sd) { //cpy ctor + fFirstEvent = sd.fFirstEvent ; + fLastEvent = sd.fLastEvent ; fA = sd.fA ; fB = sd.fB ; fPrimThreshold = sd.fPrimThreshold ; @@ -102,6 +108,15 @@ AliPHOSSDigitizer::AliPHOSSDigitizer(const AliPHOSSDigitizer & sd) } +//____________________________________________________________________________ +AliPHOSSDigitizer::~AliPHOSSDigitizer() { + //dtor + // AliPHOSGetter * gime = + // AliPHOSGetter::Instance(GetTitle(),fEventFolderName.Data()); + AliPHOSGetter * gime = + AliPHOSGetter::Instance(); + gime->PhosLoader()->CleanSDigitizer(); +} //____________________________________________________________________________ void AliPHOSSDigitizer::Init() { @@ -123,7 +138,7 @@ void AliPHOSSDigitizer::Init() gime->PostSDigitizer(this); gime->PhosLoader()->GetSDigitsDataLoader()->GetBaseTaskLoader()->SetDoNotReload(kTRUE); - + } //____________________________________________________________________________ @@ -139,7 +154,13 @@ void AliPHOSSDigitizer::InitParameters() //____________________________________________________________________________ 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() ; @@ -153,17 +174,22 @@ void AliPHOSSDigitizer::Exec(Option_t *option) //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() ; @@ -178,10 +204,10 @@ void AliPHOSSDigitizer::Exec(Option_t *option) 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(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(hits->At(i)) ; + // Assign primary number only if contribution is significant if( hit->GetEnergy() > fPrimThreshold) new((*sdigits)[nSdigits]) AliPHOSDigit(hit->GetPrimary(),hit->GetId(), @@ -191,7 +217,7 @@ void AliPHOSSDigitizer::Exec(Option_t *option) Digitize(hit->GetEnergy()), hit->GetTime()) ; nSdigits++ ; - } + } } // loop over iprim @@ -223,20 +249,27 @@ void AliPHOSSDigitizer::Exec(Option_t *option) //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(); } //__________________________________________________________________ @@ -272,34 +305,26 @@ void AliPHOSSDigitizer::PrintSDigits(Option_t * option) 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 (sdigits->At(index)))->GetId() <= maxEmc) ; index++) { digit = dynamic_cast( 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; iprimaryGetNprimary(); iprimary++) { - sprintf(tempo, "%d ",digit->GetPrimary(iprimary+1) ) ; - message += tempo ; + printf("%d ",digit->GetPrimary(iprimary+1) ) ; } } } @@ -308,27 +333,21 @@ void AliPHOSSDigitizer::PrintSDigits(Option_t * option) //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( 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; iprimaryGetNprimary(); iprimary++) { - sprintf(tempo, "%d ",digit->GetPrimary(iprimary+1) ) ; - message += tempo ; + printf("%d ",digit->GetPrimary(iprimary+1) ) ; } } } } - delete []tempo ; - Info("PrintSDigits", message.Data() ) ; } //____________________________________________________________________________