#include "TBenchmark.h"
#include "AliLog.h"
#include "AliPHOSGeometry.h"
#include "AliPHOSDigit.h"
#include "AliPHOSLoader.h"
#include "AliPHOSHit.h"
#include "AliPHOSSDigitizer.h"
ClassImp(AliPHOSSDigitizer)
AliPHOSSDigitizer::AliPHOSSDigitizer() :
TNamed("",""),
fPrimThreshold(0.f),
fDefaultInit(kTRUE),
fEventFolderName(""),
fInit(kFALSE),
fSDigitsInRun(0),
fFirstEvent(0),
fLastEvent(0)
{
}
AliPHOSSDigitizer::AliPHOSSDigitizer(const char * alirunFileName,
const char * eventFolderName):
TNamed("PHOSSDigitizer", alirunFileName),
fPrimThreshold(0.f),
fDefaultInit(kFALSE),
fEventFolderName(eventFolderName),
fInit(kFALSE),
fSDigitsInRun(0),
fFirstEvent(0),
fLastEvent(0)
{
InitParameters() ;
Init();
fDefaultInit = kFALSE ;
}
AliPHOSSDigitizer::AliPHOSSDigitizer(const AliPHOSSDigitizer& sd) :
TNamed(sd.GetName(), sd.GetTitle()),
fPrimThreshold(sd.fPrimThreshold),
fDefaultInit(kFALSE),
fEventFolderName(sd.fEventFolderName),
fInit(kFALSE),
fSDigitsInRun(sd.fSDigitsInRun),
fFirstEvent(sd.fFirstEvent),
fLastEvent(sd.fLastEvent)
{
}
AliPHOSSDigitizer& AliPHOSSDigitizer::operator = (const AliPHOSSDigitizer& qa)
{
this->~AliPHOSSDigitizer();
new(this) AliPHOSSDigitizer(qa);
return *this;
}
AliPHOSSDigitizer::~AliPHOSSDigitizer()
{
}
void AliPHOSSDigitizer::Init()
{
fInit = kTRUE ;
AliRunLoader* rl = AliRunLoader::GetRunLoader(fEventFolderName) ;
if (!rl) AliRunLoader::Open(GetTitle(), fEventFolderName) ;
}
void AliPHOSSDigitizer::InitParameters()
{
fPrimThreshold = 0.01 ;
fSDigitsInRun = 0 ;
}
void AliPHOSSDigitizer::Digitize(Option_t *option)
{
if (strstr(option, "print") ) {
Print() ;
return ;
}
if(strstr(option,"tim"))
gBenchmark->Start("PHOSSDigitizer");
AliRunLoader* rl = AliRunLoader::GetRunLoader(fEventFolderName) ;
AliPHOSLoader * phosLoader = static_cast<AliPHOSLoader*>(rl->GetLoader("PHOSLoader"));
if (!fInit) {
AliError( Form("Give a version name different from %s", fEventFolderName.Data()) ) ;
return ;
}
if (fLastEvent == -1)
fLastEvent = rl->GetNumberOfEvents() - 1 ;
else
fLastEvent = TMath::Min(fFirstEvent, rl->GetNumberOfEvents());
Int_t nEvents = fLastEvent - fFirstEvent + 1;
Int_t ievent, i;
for (ievent = fFirstEvent; ievent <= fLastEvent; ievent++) {
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 ;
for ( i = 0 ; i < hits->GetEntries() ; i++ ) {
AliPHOSHit * hit = static_cast<AliPHOSHit *>(hits->At(i)) ;
if( hit->GetEnergy() > fPrimThreshold)
new((*sdigits)[nSdigits]) AliPHOSDigit(hit->GetPrimary(),hit->GetId(),
hit->GetEnergy() ,hit->GetTime()) ;
else
new((*sdigits)[nSdigits]) AliPHOSDigit(-1 ,hit->GetId(),
hit->GetEnergy() ,hit->GetTime()) ;
nSdigits++ ;
}
sdigits->Sort() ;
nSdigits = sdigits->GetEntriesFast() ;
fSDigitsInRun += nSdigits ;
sdigits->Expand(nSdigits) ;
for (i = 0 ; i < nSdigits ; i++) {
AliPHOSDigit * digit = static_cast<AliPHOSDigit *>(sdigits->At(i)) ;
digit->SetIndexInList(i) ;
}
Int_t bufferSize = 32000 ;
TBranch * sdigitsBranch = treeS->Branch("PHOS",&sdigits,bufferSize);
sdigitsBranch->Fill() ;
phosLoader->WriteSDigits("OVERWRITE");
if(strstr(option,"deb"))
PrintSDigits(option) ;
}
Unload();
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) ;
}
}
void AliPHOSSDigitizer::Print(const Option_t *)const
{
Info("Print", "\n------------------- %s -------------", GetName() ) ;
printf(" Writing SDigits to branch with title %s\n", fEventFolderName.Data()) ;
printf(" Threshold for Primary assignment= %f\n", fPrimThreshold) ;
printf("---------------------------------------------------\n") ;
}
Bool_t AliPHOSSDigitizer::operator==( AliPHOSSDigitizer const &sd )const
{
if(fPrimThreshold==sd.fPrimThreshold)
return kTRUE ;
else
return kFALSE ;
}
void AliPHOSSDigitizer::PrintSDigits(Option_t * option)
{
AliRunLoader* rl = AliRunLoader::GetRunLoader(fEventFolderName) ;
AliPHOSLoader * phosLoader = static_cast<AliPHOSLoader*>(rl->GetLoader("PHOSLoader"));
AliPHOSGeometry *geom;
if (!(geom = AliPHOSGeometry::GetInstance()))
geom = AliPHOSGeometry::GetInstance("IHEP","");
const TClonesArray * sdigits = phosLoader->SDigits() ;
Info( "\nPrintSDigits", "event # %d %d sdigits",
gAlice->GetEvNumber(), sdigits->GetEntriesFast() ) ;
if(strstr(option,"all")||strstr(option,"EMC")){
AliPHOSDigit * digit;
printf("\nEMC sdigits\n") ;
Int_t maxEmc = geom->GetNModules() * geom->GetNCristalsInModule() ;
Int_t index ;
for (index = 0 ; (index < sdigits->GetEntriesFast()) &&
((static_cast<AliPHOSDigit *> (sdigits->At(index)))->GetId() <= maxEmc) ; index++) {
digit = static_cast<AliPHOSDigit *>( sdigits->At(index) ) ;
printf("%6d %.4f %6.5e %4d %2d :\n",
digit->GetId(), digit->GetEnergy(), digit->GetTime(), digit->GetIndexInList(), digit->GetNprimary()) ;
Int_t iprimary;
for (iprimary=0; iprimary<digit->GetNprimary(); iprimary++) {
printf("%d ",digit->GetPrimary(iprimary+1) ) ;
}
}
}
if(strstr(option,"all")||strstr(option,"CPV")){
AliPHOSDigit * digit;
printf("\nCPV sdigits\n") ;
Int_t maxEmc = geom->GetNModules() * geom->GetNCristalsInModule() ;
Int_t index ;
for (index = 0 ; index < sdigits->GetEntriesFast(); index++) {
digit = static_cast<AliPHOSDigit *>( sdigits->At(index) ) ;
if(digit->GetId() > maxEmc){
printf("\n%6d %8d %4d %2d :",
digit->GetId(), digit->GetAmp(), digit->GetIndexInList(), digit->GetNprimary()) ;
Int_t iprimary;
for (iprimary=0; iprimary<digit->GetNprimary(); iprimary++) {
printf("%d ",digit->GetPrimary(iprimary+1) ) ;
}
}
}
}
}
void AliPHOSSDigitizer::Unload() const
{
AliRunLoader* rl = AliRunLoader::GetRunLoader(fEventFolderName) ;
AliPHOSLoader * phosLoader = static_cast<AliPHOSLoader*>(rl->GetLoader("PHOSLoader"));
phosLoader->UnloadHits() ;
phosLoader->UnloadSDigits() ;
}
AliPHOSSDigitizer.cxx:100 AliPHOSSDigitizer.cxx:101 AliPHOSSDigitizer.cxx:102 AliPHOSSDigitizer.cxx:103 AliPHOSSDigitizer.cxx:104 AliPHOSSDigitizer.cxx:105 AliPHOSSDigitizer.cxx:106 AliPHOSSDigitizer.cxx:107 AliPHOSSDigitizer.cxx:108 AliPHOSSDigitizer.cxx:109 AliPHOSSDigitizer.cxx:110 AliPHOSSDigitizer.cxx:111 AliPHOSSDigitizer.cxx:112 AliPHOSSDigitizer.cxx:113 AliPHOSSDigitizer.cxx:114 AliPHOSSDigitizer.cxx:115 AliPHOSSDigitizer.cxx:116 AliPHOSSDigitizer.cxx:117 AliPHOSSDigitizer.cxx:118 AliPHOSSDigitizer.cxx:119 AliPHOSSDigitizer.cxx:120 AliPHOSSDigitizer.cxx:121 AliPHOSSDigitizer.cxx:122 AliPHOSSDigitizer.cxx:123 AliPHOSSDigitizer.cxx:124 AliPHOSSDigitizer.cxx:125 AliPHOSSDigitizer.cxx:126 AliPHOSSDigitizer.cxx:127 AliPHOSSDigitizer.cxx:128 AliPHOSSDigitizer.cxx:129 AliPHOSSDigitizer.cxx:130 AliPHOSSDigitizer.cxx:131 AliPHOSSDigitizer.cxx:132 AliPHOSSDigitizer.cxx:133 AliPHOSSDigitizer.cxx:134 AliPHOSSDigitizer.cxx:135 AliPHOSSDigitizer.cxx:136 AliPHOSSDigitizer.cxx:137 AliPHOSSDigitizer.cxx:138 AliPHOSSDigitizer.cxx:139 AliPHOSSDigitizer.cxx:140 AliPHOSSDigitizer.cxx:141 AliPHOSSDigitizer.cxx:142 AliPHOSSDigitizer.cxx:143 AliPHOSSDigitizer.cxx:144 AliPHOSSDigitizer.cxx:145 AliPHOSSDigitizer.cxx:146 AliPHOSSDigitizer.cxx:147 AliPHOSSDigitizer.cxx:148 AliPHOSSDigitizer.cxx:149 AliPHOSSDigitizer.cxx:150 AliPHOSSDigitizer.cxx:151 AliPHOSSDigitizer.cxx:152 AliPHOSSDigitizer.cxx:153 AliPHOSSDigitizer.cxx:154 AliPHOSSDigitizer.cxx:155 AliPHOSSDigitizer.cxx:156 AliPHOSSDigitizer.cxx:157 AliPHOSSDigitizer.cxx:158 AliPHOSSDigitizer.cxx:159 AliPHOSSDigitizer.cxx:160 AliPHOSSDigitizer.cxx:161 AliPHOSSDigitizer.cxx:162 AliPHOSSDigitizer.cxx:163 AliPHOSSDigitizer.cxx:164 AliPHOSSDigitizer.cxx:165 AliPHOSSDigitizer.cxx:166 AliPHOSSDigitizer.cxx:167 AliPHOSSDigitizer.cxx:168 AliPHOSSDigitizer.cxx:169 AliPHOSSDigitizer.cxx:170 AliPHOSSDigitizer.cxx:171 AliPHOSSDigitizer.cxx:172 AliPHOSSDigitizer.cxx:173 AliPHOSSDigitizer.cxx:174 AliPHOSSDigitizer.cxx:175 AliPHOSSDigitizer.cxx:176 AliPHOSSDigitizer.cxx:177 AliPHOSSDigitizer.cxx:178 AliPHOSSDigitizer.cxx:179 AliPHOSSDigitizer.cxx:180 AliPHOSSDigitizer.cxx:181 AliPHOSSDigitizer.cxx:182 AliPHOSSDigitizer.cxx:183 AliPHOSSDigitizer.cxx:184 AliPHOSSDigitizer.cxx:185 AliPHOSSDigitizer.cxx:186 AliPHOSSDigitizer.cxx:187 AliPHOSSDigitizer.cxx:188 AliPHOSSDigitizer.cxx:189 AliPHOSSDigitizer.cxx:190 AliPHOSSDigitizer.cxx:191 AliPHOSSDigitizer.cxx:192 AliPHOSSDigitizer.cxx:193 AliPHOSSDigitizer.cxx:194 AliPHOSSDigitizer.cxx:195 AliPHOSSDigitizer.cxx:196 AliPHOSSDigitizer.cxx:197 AliPHOSSDigitizer.cxx:198 AliPHOSSDigitizer.cxx:199 AliPHOSSDigitizer.cxx:200 AliPHOSSDigitizer.cxx:201 AliPHOSSDigitizer.cxx:202 AliPHOSSDigitizer.cxx:203 AliPHOSSDigitizer.cxx:204 AliPHOSSDigitizer.cxx:205 AliPHOSSDigitizer.cxx:206 AliPHOSSDigitizer.cxx:207 AliPHOSSDigitizer.cxx:208 AliPHOSSDigitizer.cxx:209 AliPHOSSDigitizer.cxx:210 AliPHOSSDigitizer.cxx:211 AliPHOSSDigitizer.cxx:212 AliPHOSSDigitizer.cxx:213 AliPHOSSDigitizer.cxx:214 AliPHOSSDigitizer.cxx:215 AliPHOSSDigitizer.cxx:216 AliPHOSSDigitizer.cxx:217 AliPHOSSDigitizer.cxx:218 AliPHOSSDigitizer.cxx:219 AliPHOSSDigitizer.cxx:220 AliPHOSSDigitizer.cxx:221 AliPHOSSDigitizer.cxx:222 AliPHOSSDigitizer.cxx:223 AliPHOSSDigitizer.cxx:224 AliPHOSSDigitizer.cxx:225 AliPHOSSDigitizer.cxx:226 AliPHOSSDigitizer.cxx:227 AliPHOSSDigitizer.cxx:228 AliPHOSSDigitizer.cxx:229 AliPHOSSDigitizer.cxx:230 AliPHOSSDigitizer.cxx:231 AliPHOSSDigitizer.cxx:232 AliPHOSSDigitizer.cxx:233 AliPHOSSDigitizer.cxx:234 AliPHOSSDigitizer.cxx:235 AliPHOSSDigitizer.cxx:236 AliPHOSSDigitizer.cxx:237 AliPHOSSDigitizer.cxx:238 AliPHOSSDigitizer.cxx:239 AliPHOSSDigitizer.cxx:240 AliPHOSSDigitizer.cxx:241 AliPHOSSDigitizer.cxx:242 AliPHOSSDigitizer.cxx:243 AliPHOSSDigitizer.cxx:244 AliPHOSSDigitizer.cxx:245 AliPHOSSDigitizer.cxx:246 AliPHOSSDigitizer.cxx:247 AliPHOSSDigitizer.cxx:248 AliPHOSSDigitizer.cxx:249 AliPHOSSDigitizer.cxx:250 AliPHOSSDigitizer.cxx:251 AliPHOSSDigitizer.cxx:252 AliPHOSSDigitizer.cxx:253 AliPHOSSDigitizer.cxx:254 AliPHOSSDigitizer.cxx:255 AliPHOSSDigitizer.cxx:256 AliPHOSSDigitizer.cxx:257 AliPHOSSDigitizer.cxx:258 AliPHOSSDigitizer.cxx:259 AliPHOSSDigitizer.cxx:260 AliPHOSSDigitizer.cxx:261 AliPHOSSDigitizer.cxx:262 AliPHOSSDigitizer.cxx:263 AliPHOSSDigitizer.cxx:264 AliPHOSSDigitizer.cxx:265 AliPHOSSDigitizer.cxx:266 AliPHOSSDigitizer.cxx:267 AliPHOSSDigitizer.cxx:268 AliPHOSSDigitizer.cxx:269 AliPHOSSDigitizer.cxx:270 AliPHOSSDigitizer.cxx:271 AliPHOSSDigitizer.cxx:272 AliPHOSSDigitizer.cxx:273 AliPHOSSDigitizer.cxx:274 AliPHOSSDigitizer.cxx:275 AliPHOSSDigitizer.cxx:276 AliPHOSSDigitizer.cxx:277 AliPHOSSDigitizer.cxx:278 AliPHOSSDigitizer.cxx:279 AliPHOSSDigitizer.cxx:280 AliPHOSSDigitizer.cxx:281 AliPHOSSDigitizer.cxx:282 AliPHOSSDigitizer.cxx:283 AliPHOSSDigitizer.cxx:284 AliPHOSSDigitizer.cxx:285 AliPHOSSDigitizer.cxx:286 AliPHOSSDigitizer.cxx:287 AliPHOSSDigitizer.cxx:288 AliPHOSSDigitizer.cxx:289 AliPHOSSDigitizer.cxx:290 AliPHOSSDigitizer.cxx:291 AliPHOSSDigitizer.cxx:292 AliPHOSSDigitizer.cxx:293 AliPHOSSDigitizer.cxx:294 AliPHOSSDigitizer.cxx:295 AliPHOSSDigitizer.cxx:296 AliPHOSSDigitizer.cxx:297 AliPHOSSDigitizer.cxx:298 AliPHOSSDigitizer.cxx:299 AliPHOSSDigitizer.cxx:300 AliPHOSSDigitizer.cxx:301 AliPHOSSDigitizer.cxx:302 AliPHOSSDigitizer.cxx:303 AliPHOSSDigitizer.cxx:304 AliPHOSSDigitizer.cxx:305 AliPHOSSDigitizer.cxx:306 AliPHOSSDigitizer.cxx:307 AliPHOSSDigitizer.cxx:308 AliPHOSSDigitizer.cxx:309 AliPHOSSDigitizer.cxx:310 AliPHOSSDigitizer.cxx:311 AliPHOSSDigitizer.cxx:312 AliPHOSSDigitizer.cxx:313 AliPHOSSDigitizer.cxx:314 AliPHOSSDigitizer.cxx:315 AliPHOSSDigitizer.cxx:316 AliPHOSSDigitizer.cxx:317 AliPHOSSDigitizer.cxx:318 AliPHOSSDigitizer.cxx:319 AliPHOSSDigitizer.cxx:320 AliPHOSSDigitizer.cxx:321 AliPHOSSDigitizer.cxx:322 AliPHOSSDigitizer.cxx:323 AliPHOSSDigitizer.cxx:324 AliPHOSSDigitizer.cxx:325 AliPHOSSDigitizer.cxx:326 AliPHOSSDigitizer.cxx:327 AliPHOSSDigitizer.cxx:328 AliPHOSSDigitizer.cxx:329 AliPHOSSDigitizer.cxx:330 AliPHOSSDigitizer.cxx:331 AliPHOSSDigitizer.cxx:332 AliPHOSSDigitizer.cxx:333 AliPHOSSDigitizer.cxx:334 AliPHOSSDigitizer.cxx:335 AliPHOSSDigitizer.cxx:336 AliPHOSSDigitizer.cxx:337 AliPHOSSDigitizer.cxx:338 AliPHOSSDigitizer.cxx:339 AliPHOSSDigitizer.cxx:340 AliPHOSSDigitizer.cxx:341 AliPHOSSDigitizer.cxx:342 AliPHOSSDigitizer.cxx:343 AliPHOSSDigitizer.cxx:344 AliPHOSSDigitizer.cxx:345 AliPHOSSDigitizer.cxx:346 AliPHOSSDigitizer.cxx:347 AliPHOSSDigitizer.cxx:348 AliPHOSSDigitizer.cxx:349 AliPHOSSDigitizer.cxx:350 AliPHOSSDigitizer.cxx:351 AliPHOSSDigitizer.cxx:352 AliPHOSSDigitizer.cxx:353 AliPHOSSDigitizer.cxx:354 AliPHOSSDigitizer.cxx:355 AliPHOSSDigitizer.cxx:356 AliPHOSSDigitizer.cxx:357 AliPHOSSDigitizer.cxx:358 AliPHOSSDigitizer.cxx:359 AliPHOSSDigitizer.cxx:360 AliPHOSSDigitizer.cxx:361 AliPHOSSDigitizer.cxx:362 AliPHOSSDigitizer.cxx:363 AliPHOSSDigitizer.cxx:364 AliPHOSSDigitizer.cxx:365 AliPHOSSDigitizer.cxx:366 AliPHOSSDigitizer.cxx:367 AliPHOSSDigitizer.cxx:368 AliPHOSSDigitizer.cxx:369 AliPHOSSDigitizer.cxx:370 AliPHOSSDigitizer.cxx:371 AliPHOSSDigitizer.cxx:372 AliPHOSSDigitizer.cxx:373 AliPHOSSDigitizer.cxx:374 AliPHOSSDigitizer.cxx:375 AliPHOSSDigitizer.cxx:376 AliPHOSSDigitizer.cxx:377 AliPHOSSDigitizer.cxx:378 AliPHOSSDigitizer.cxx:379 AliPHOSSDigitizer.cxx:380 AliPHOSSDigitizer.cxx:381 AliPHOSSDigitizer.cxx:382 AliPHOSSDigitizer.cxx:383 AliPHOSSDigitizer.cxx:384 AliPHOSSDigitizer.cxx:385 AliPHOSSDigitizer.cxx:386 AliPHOSSDigitizer.cxx:387 AliPHOSSDigitizer.cxx:388 AliPHOSSDigitizer.cxx:389 AliPHOSSDigitizer.cxx:390 AliPHOSSDigitizer.cxx:391 AliPHOSSDigitizer.cxx:392 AliPHOSSDigitizer.cxx:393 AliPHOSSDigitizer.cxx:394 AliPHOSSDigitizer.cxx:395 AliPHOSSDigitizer.cxx:396 AliPHOSSDigitizer.cxx:397 AliPHOSSDigitizer.cxx:398 AliPHOSSDigitizer.cxx:399 AliPHOSSDigitizer.cxx:400 AliPHOSSDigitizer.cxx:401 AliPHOSSDigitizer.cxx:402 AliPHOSSDigitizer.cxx:403 AliPHOSSDigitizer.cxx:404 AliPHOSSDigitizer.cxx:405 AliPHOSSDigitizer.cxx:406 AliPHOSSDigitizer.cxx:407 AliPHOSSDigitizer.cxx:408