AliPHOSTrigger tr ;
// tr.SetPatchSize(1);//create 4x4 patches
- tr.Trigger();
+ tr.SetSimulation(kFALSE);
+ tr.Trigger(digitsArray);
Float_t maxAmp2x2 = tr.Get2x2MaxAmplitude();
Float_t maxAmpnxn = tr.GetnxnMaxAmplitude();
AliDebug(2, Form("Trigger 4x4 max amp %f , out amp %f, SM %d, iphi %d, ieta %d",
maxAmpnxn, ampOutOfPatchnxn, iSMnxn,iCrystalPhinxn, iCrystalEtanxn));
- Int_t iRelId2x2 []= {iSM2x2+1,0,iCrystalPhi2x2,iCrystalEta2x2};// PHOS modules in order to calculate AbsId need to be 1-5 not 0-4 as returns trigger.
+ // Attention! PHOS modules in order to calculate AbsId need to be 1-5 not 0-4 as returns trigger.
+ Int_t iRelId2x2 []= {iSM2x2+1,0,iCrystalPhi2x2,iCrystalEta2x2};
Int_t iAbsId2x2 =-1;
- Int_t iRelIdnxn []= {iSMnxn+1,0,iCrystalPhinxn,iCrystalEtanxn};// PHOS modules in order to calculate AbsId need to be 1-5 not 0-4 as returns trigger.
+ Int_t iRelIdnxn []= {iSMnxn+1,0,iCrystalPhinxn,iCrystalEtanxn};
Int_t iAbsIdnxn =-1;
TVector3 pos2x2(-1,-1,-1);
TVector3 posnxn(-1,-1,-1);
// --- ROOT system ---
#include "TBenchmark.h"
- //#include "TObjectTable.h"
// --- Standard library ---
#include "AliLog.h"
#include "AliPHOSGeometry.h"
#include "AliPHOSDigit.h"
-#include "AliPHOSGetter.h"
+#include "AliPHOSLoader.h"
#include "AliPHOSHit.h"
#include "AliPHOSSDigitizer.h"
//____________________________________________________________________________
AliPHOSSDigitizer::~AliPHOSSDigitizer() {
//dtor
- AliPHOSGetter * gime =
- AliPHOSGetter::Instance();
- gime->PhosLoader()->CleanSDigitizer();
+ AliRunLoader* rl = AliRunLoader::GetRunLoader(fEventFolderName) ;
+ if(rl){
+ AliPHOSLoader * phosLoader =
+ dynamic_cast<AliPHOSLoader*>(rl->GetLoader("PHOSLoader"));
+ phosLoader->CleanSDigitizer() ;
+ }
}
//____________________________________________________________________________
void AliPHOSSDigitizer::Init()
{
- // Uses the getter to access the required files
+ // Uses the Loader to access the required files
fInit = kTRUE ;
- AliPHOSGetter * gime = AliPHOSGetter::Instance(GetTitle(), fEventFolderName.Data());
- if ( gime == 0 ) {
- Fatal("Init" ,"Could not obtain the Getter object for file %s and event %s !", GetTitle(), fEventFolderName.Data()) ;
- return ;
- }
-
- TString opt("SDigits") ;
- if(gime->VersionExists(opt) ) {
- Error( "Init", "Give a version name different from %s", fEventFolderName.Data() ) ;
- fInit = kFALSE ;
- }
-
- gime->PostSDigitizer(this);
- gime->PhosLoader()->GetSDigitsDataLoader()->GetBaseTaskLoader()->SetDoNotReload(kTRUE);
-
+ //to prevent cleaning of this object while GetEvent is called
+ AliRunLoader* rl = AliRunLoader::GetRunLoader(fEventFolderName) ;
+ if (!rl)
+ rl = AliRunLoader::Open(GetTitle(), fEventFolderName) ;
+
+ AliPHOSLoader * phosLoader = dynamic_cast<AliPHOSLoader*>(rl->GetLoader("PHOSLoader"));
+ phosLoader->PostSDigitizer(this);
+ phosLoader->GetSDigitsDataLoader()->GetBaseTaskLoader()->SetDoNotReload(kTRUE);
}
//____________________________________________________________________________
AliInfo("QA status in RAW was Info") ;
}
*/
- AliPHOSGetter * gime = AliPHOSGetter::Instance() ;
+ AliRunLoader* rl = AliRunLoader::GetRunLoader(fEventFolderName) ;
+ AliPHOSLoader * phosLoader = dynamic_cast<AliPHOSLoader*>(rl->GetLoader("PHOSLoader"));
//switch off reloading of this task while getting event
if (!fInit) { // to prevent overwrite existing file
}
if (fLastEvent == -1)
- fLastEvent = gime->MaxEvent() - 1 ;
+ fLastEvent = rl->GetNumberOfEvents() - 1 ;
else
- fLastEvent = TMath::Min(fFirstEvent, gime->MaxEvent()); // only ine event at the time
+ fLastEvent = TMath::Min(fFirstEvent, rl->GetNumberOfEvents()); // only one event at the time
Int_t nEvents = fLastEvent - fFirstEvent + 1;
Int_t ievent, i;
for (ievent = fFirstEvent; ievent <= fLastEvent; ievent++) {
- gime->Event(ievent,"H") ;
- TTree * treeS = gime->TreeS();
- TClonesArray * hits = gime->Hits() ;
- TClonesArray * sdigits = gime->SDigits() ;
+ rl->GetEvent(ievent) ;
+ TTree * treeS = phosLoader->TreeS();
+ if(!treeS){
+ phosLoader->MakeTree("S");
+ treeS = phosLoader->TreeS();
+ }
+
+ phosLoader->CleanHits() ;
+ phosLoader->LoadHits("READ") ;
+
+ TClonesArray * hits = phosLoader->Hits() ;
+ TClonesArray * sdigits = phosLoader->SDigits() ;
+ if( !sdigits ) {
+ phosLoader->MakeSDigitsArray() ;
+ sdigits = phosLoader->SDigits() ;
+ }
sdigits->Clear();
Int_t nSdigits = 0 ;
+
//Now make SDigits from hits, for PHOS it is the same, so just copy
for ( i = 0 ; i < hits->GetEntries() ; i++ ) {
AliPHOSHit * hit = dynamic_cast<AliPHOSHit *>(hits->At(i)) ;
Int_t bufferSize = 32000 ;
TBranch * sdigitsBranch = treeS->Branch("PHOS",&sdigits,bufferSize);
-
sdigitsBranch->Fill() ;
- gime->WriteSDigits("OVERWRITE");
+ phosLoader->WriteSDigits("OVERWRITE");
+ phosLoader->WriteSDigitizer("OVERWRITE");
- //Next - SDigitizer
-
- gime->WriteSDigitizer("OVERWRITE");
- //gObjectTable->Print() ;
-
if(strstr(option,"deb"))
PrintSDigits(option) ;
Unload();
- // 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) ;
}
}
{
// Prints list of digits produced in the current pass of AliPHOSDigitizer
-
- AliPHOSGetter * gime = AliPHOSGetter::Instance() ;
+ AliRunLoader* rl = AliRunLoader::GetRunLoader(fEventFolderName) ;
+ AliPHOSLoader * phosLoader = dynamic_cast<AliPHOSLoader*>(rl->GetLoader("PHOSLoader"));
// Get PHOS Geometry object
AliPHOSGeometry *geom;
if (!(geom = AliPHOSGeometry::GetInstance()))
geom = AliPHOSGeometry::GetInstance("IHEP","");
- const TClonesArray * sdigits = gime->SDigits() ;
+ const TClonesArray * sdigits = phosLoader->SDigits() ;
- Info( "\nPrintSDigits", "event # %d %d sdigits", gAlice->GetEvNumber(), sdigits->GetEntriesFast() ) ;
+ Info( "\nPrintSDigits", "event # %d %d sdigits",
+ gAlice->GetEvNumber(), sdigits->GetEntriesFast() ) ;
if(strstr(option,"all")||strstr(option,"EMC")){
void AliPHOSSDigitizer::Unload() const
{
// Unloads the objects from the folder
- AliPHOSGetter * gime = AliPHOSGetter::Instance() ;
- AliPHOSLoader * loader = gime->PhosLoader() ;
- loader->UnloadHits() ;
- loader->UnloadSDigits() ;
+ AliRunLoader* rl = AliRunLoader::GetRunLoader(fEventFolderName) ;
+ AliPHOSLoader * phosLoader = dynamic_cast<AliPHOSLoader*>(rl->GetLoader("PHOSLoader"));
+ phosLoader->UnloadHits() ;
+ phosLoader->UnloadSDigits() ;
}
// --- ROOT system ---
+#include "TMath.h"
// --- ALIROOT system ---
+#include "AliConfig.h"
#include "AliPHOS.h"
#include "AliPHOSTrigger.h"
#include "AliPHOSGeometry.h"
-#include "AliPHOSGetter.h"
+#include "AliPHOSDigit.h"
+#include "AliPHOSLoader.h"
#include "AliPHOSPulseGenerator.h"
#include "AliTriggerInput.h"
// cpy ctor
}
+//_________________________________________________________________________
AliPHOSTrigger::~AliPHOSTrigger()
{
// dtor
}
//____________________________________________________________________________
-void AliPHOSTrigger::Trigger()
+void AliPHOSTrigger::Trigger(TClonesArray *digits)
{
-
//Main Method to select triggers.
- AliRunLoader * rl = AliRunLoader::GetRunLoader();
- TString fileName = rl->GetFileName() ;
- DoIt(fileName.Data()) ;
+ fDigitsList = digits;
+ DoIt() ;
}
//____________________________________________________________________________
-void AliPHOSTrigger::Trigger(const char * fileName)
-{
-
- //Main Method to select triggers.
-
-
- DoIt(fileName) ;
-}
-
-//____________________________________________________________________________
-void AliPHOSTrigger::DoIt(const char * fileName)
+void AliPHOSTrigger::DoIt()
{
// does the trigger job
- AliPHOSGetter * gime = AliPHOSGetter::Instance( fileName ) ;
+ AliRunLoader* rl = AliRunLoader::GetRunLoader() ;
+ AliPHOSLoader * phosLoader = dynamic_cast<AliPHOSLoader*>(rl->GetLoader("PHOSLoader"));
// Get PHOS Geometry object
AliPHOSGeometry *geom;
//Take the digits list if simulation
if(fSimulation)
- fDigitsList = gime->Digits() ;
+ fDigitsList = phosLoader->Digits() ;
if(!fDigitsList)
AliFatal("Digits not found !") ;
//Set the trigger
if(fIsolateInModule)
SetTriggers(ampmods,imod,ampmax2,ampmaxn) ;
- if(!fIsolateInModule)
+ else
SetTriggers(amptrus,imod,ampmax2,ampmaxn) ;
}