#include <TMath.h>
#include <TTree.h>
#include <TRandom.h>
#include "AliRun.h"
#include "AliACORDE.h"
#include "AliACORDEhit.h"
#include "AliRunLoader.h"
#include "AliLoader.h"
#include "AliDigitizationInput.h"
#include "AliCDBManager.h"
#include "AliCDBStorage.h"
#include "AliCDBEntry.h"
#include "AliACORDECalibData.h"
#include "AliACORDEConstants.h"
#include "AliACORDEdigit.h"
#include "AliACORDEDigitizer.h"
ClassImp(AliACORDEDigitizer)
AliACORDEDigitizer::AliACORDEDigitizer()
:AliDigitizer(),
fCalibData(GetCalibData()),
fNdigits(0),
fDigits(0)
{
}
AliACORDEDigitizer::AliACORDEDigitizer(AliDigitizationInput* digInput)
:AliDigitizer(digInput),
fCalibData(GetCalibData()),
fNdigits(0),
fDigits(0)
{
}
AliACORDEDigitizer::~AliACORDEDigitizer()
{
if (fDigits) {
fDigits->Delete();
delete fDigits;
fDigits=0;
}
}
Bool_t AliACORDEDigitizer::Init()
{
fDigits = new TClonesArray ("AliACORDEdigit", 1000);
return kTRUE;
}
void AliACORDEDigitizer::Digitize(Option_t* )
{
Float_t emin = AliACORDEConstants::Instance()->HitEnergyThreshold();
Float_t td = AliACORDEConstants::Instance()->MaxHitTimeDifference();
Int_t modules[60]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
Int_t moduls[60]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
Int_t mods;
Float_t PlasticTimes[2][60];
Int_t PlasticTracks[2][60];
for (Int_t i=0;i<60;i++) {
PlasticTimes[0][i]=-1.0;
PlasticTimes[1][i]=-1.0;
PlasticTracks[0][i]=-1;
PlasticTracks[1][i]=-1;
}
AliRunLoader* outRunLoader =
AliRunLoader::GetRunLoader(fDigInput->GetOutputFolderName());
if (!outRunLoader) {
Error("Exec", "Can not get output Run Loader");
return;}
AliLoader* outLoader = outRunLoader->GetLoader("ACORDELoader");
if (!outLoader) {
Error("Exec", "Can not get output ACORDE Loader");
return;}
outLoader->LoadDigits("update");
if (!outLoader->TreeD()) outLoader->MakeTree("D");
outLoader->MakeDigitsContainer();
TTree* treeD = outLoader->TreeD();
Int_t bufsize = 16000;
treeD->Branch("ACORDEdigit", &fDigits, bufsize);
for (Int_t iInput = 0; iInput < fDigInput->GetNinputs(); iInput++) {
AliRunLoader* runLoader =
AliRunLoader::GetRunLoader(fDigInput->GetInputFolderName(iInput));
AliLoader* loader = runLoader->GetLoader("ACORDELoader");
if (!loader) {
Error("Exec", "Can not get ACORDE Loader for input %d", iInput);
continue;}
if (!runLoader->GetAliRun()) runLoader->LoadgAlice();
AliACORDE* acorde = (AliACORDE*) runLoader->GetAliRun()->GetDetector("ACORDE");
if (!acorde) {
Error("Exec", "No ACORDE detector for input %d", iInput);
continue;}
loader->LoadHits();
TTree* treeH = loader->TreeH();
if (!treeH) {
Error("Exec", "Cannot get TreeH for input %d", iInput);
continue; }
TClonesArray* hits = acorde->Hits();
Int_t nTracks = (Int_t) treeH->GetEntries();
for (Int_t iTrack = 0; iTrack < nTracks; iTrack++) {
acorde->ResetHits();
treeH->GetEvent(iTrack);
Int_t nHits = hits->GetEntriesFast();
for (Int_t iHit = 0; iHit < nHits; iHit++) {
AliACORDEhit* hit = (AliACORDEhit *)hits->UncheckedAt(iHit);
Float_t eloss_mev = hit->Eloss()*1000.0;
Int_t module = hit->GetModule();
modules[module]=1;
Int_t plastic = hit->GetPlastic();
Float_t time_ns = hit->GetTime()*1e9;
Float_t eff = TMath::Sqrt(fCalibData->GetEfficiency(module));
if( eloss_mev > emin && gRandom->Uniform() < eff ) {
if ((PlasticTimes[plastic-1][module-1] == -1.0) ||
(PlasticTimes[plastic-1][module-1] > time_ns) ) {
PlasticTimes[plastic-1][module-1]= time_ns;
PlasticTracks[plastic-1][module-1]= hit->GetTrack();
}
}
}
}
for(Int_t i=0;i<60;i++){moduls[i]=modules[i];}
loader->UnloadHits();
}
Int_t tracks[3]={-1,-1,-1};
for (Int_t i=0; i<60; i++) {
Float_t diff = TMath::Abs(PlasticTimes[0][i]-PlasticTimes[1][i]);
if (diff < td) {
tracks[0] = PlasticTracks[0][i];
if (PlasticTracks[0][i] != PlasticTracks[1][i])
tracks[1] = PlasticTracks[1][i];
if(moduls[i]==1) {
mods = i;
AddDigit(tracks, mods, 0);
}
}
}
treeD->Fill();
outLoader->WriteDigits("OVERWRITE");
outLoader->UnloadDigits();
ResetDigit();
}
void AliACORDEDigitizer::AddDigit(Int_t* track, Int_t module, Float_t time)
{
TClonesArray &ldigits = *fDigits;
new(ldigits[fNdigits++]) AliACORDEdigit(track,module,time);
}
void AliACORDEDigitizer::AddDigit(Int_t* modul,Float_t time)
{
TClonesArray &ldigits = *fDigits;
new(ldigits[fNdigits++]) AliACORDEdigit(modul,time);
}
void AliACORDEDigitizer::ResetDigit()
{
fNdigits = 0;
if (fDigits) fDigits->Delete();
}
AliACORDECalibData* AliACORDEDigitizer::GetCalibData() const
{
AliCDBManager *man = AliCDBManager::Instance();
AliCDBEntry *entry=0;
entry = man->Get("ACORDE/Calib/Data");
if(!entry){
AliWarning("Load of calibration data from default storage failed!");
AliWarning("Calibration data will be loaded from local storage ($ALICE_ROOT)");
Int_t runNumber = man->GetRun();
entry = man->GetStorage("local://$ALICE_ROOT/OCDB")
->Get("ACORDE/Calib/Data",runNumber);
}
AliACORDECalibData *calibdata = 0;
if (entry) calibdata = (AliACORDECalibData*) entry->GetObject();
if (!calibdata) AliError("No calibration data from calibration database !");
return calibdata;
}
AliACORDEDigitizer.cxx:10 AliACORDEDigitizer.cxx:11 AliACORDEDigitizer.cxx:12 AliACORDEDigitizer.cxx:13 AliACORDEDigitizer.cxx:14 AliACORDEDigitizer.cxx:15 AliACORDEDigitizer.cxx:16 AliACORDEDigitizer.cxx:17 AliACORDEDigitizer.cxx:18 AliACORDEDigitizer.cxx:19 AliACORDEDigitizer.cxx:20 AliACORDEDigitizer.cxx:21 AliACORDEDigitizer.cxx:22 AliACORDEDigitizer.cxx:23 AliACORDEDigitizer.cxx:24 AliACORDEDigitizer.cxx:25 AliACORDEDigitizer.cxx:26 AliACORDEDigitizer.cxx:27 AliACORDEDigitizer.cxx:28 AliACORDEDigitizer.cxx:29 AliACORDEDigitizer.cxx:30 AliACORDEDigitizer.cxx:31 AliACORDEDigitizer.cxx:32 AliACORDEDigitizer.cxx:33 AliACORDEDigitizer.cxx:34 AliACORDEDigitizer.cxx:35 AliACORDEDigitizer.cxx:36 AliACORDEDigitizer.cxx:37 AliACORDEDigitizer.cxx:38 AliACORDEDigitizer.cxx:39 AliACORDEDigitizer.cxx:40 AliACORDEDigitizer.cxx:41 AliACORDEDigitizer.cxx:42 AliACORDEDigitizer.cxx:43 AliACORDEDigitizer.cxx:44 AliACORDEDigitizer.cxx:45 AliACORDEDigitizer.cxx:46 AliACORDEDigitizer.cxx:47 AliACORDEDigitizer.cxx:48 AliACORDEDigitizer.cxx:49 AliACORDEDigitizer.cxx:50 AliACORDEDigitizer.cxx:51 AliACORDEDigitizer.cxx:52 AliACORDEDigitizer.cxx:53 AliACORDEDigitizer.cxx:54 AliACORDEDigitizer.cxx:55 AliACORDEDigitizer.cxx:56 AliACORDEDigitizer.cxx:57 AliACORDEDigitizer.cxx:58 AliACORDEDigitizer.cxx:59 AliACORDEDigitizer.cxx:60 AliACORDEDigitizer.cxx:61 AliACORDEDigitizer.cxx:62 AliACORDEDigitizer.cxx:63 AliACORDEDigitizer.cxx:64 AliACORDEDigitizer.cxx:65 AliACORDEDigitizer.cxx:66 AliACORDEDigitizer.cxx:67 AliACORDEDigitizer.cxx:68 AliACORDEDigitizer.cxx:69 AliACORDEDigitizer.cxx:70 AliACORDEDigitizer.cxx:71 AliACORDEDigitizer.cxx:72 AliACORDEDigitizer.cxx:73 AliACORDEDigitizer.cxx:74 AliACORDEDigitizer.cxx:75 AliACORDEDigitizer.cxx:76 AliACORDEDigitizer.cxx:77 AliACORDEDigitizer.cxx:78 AliACORDEDigitizer.cxx:79 AliACORDEDigitizer.cxx:80 AliACORDEDigitizer.cxx:81 AliACORDEDigitizer.cxx:82 AliACORDEDigitizer.cxx:83 AliACORDEDigitizer.cxx:84 AliACORDEDigitizer.cxx:85 AliACORDEDigitizer.cxx:86 AliACORDEDigitizer.cxx:87 AliACORDEDigitizer.cxx:88 AliACORDEDigitizer.cxx:89 AliACORDEDigitizer.cxx:90 AliACORDEDigitizer.cxx:91 AliACORDEDigitizer.cxx:92 AliACORDEDigitizer.cxx:93 AliACORDEDigitizer.cxx:94 AliACORDEDigitizer.cxx:95 AliACORDEDigitizer.cxx:96 AliACORDEDigitizer.cxx:97 AliACORDEDigitizer.cxx:98 AliACORDEDigitizer.cxx:99 AliACORDEDigitizer.cxx:100 AliACORDEDigitizer.cxx:101 AliACORDEDigitizer.cxx:102 AliACORDEDigitizer.cxx:103 AliACORDEDigitizer.cxx:104 AliACORDEDigitizer.cxx:105 AliACORDEDigitizer.cxx:106 AliACORDEDigitizer.cxx:107 AliACORDEDigitizer.cxx:108 AliACORDEDigitizer.cxx:109 AliACORDEDigitizer.cxx:110 AliACORDEDigitizer.cxx:111 AliACORDEDigitizer.cxx:112 AliACORDEDigitizer.cxx:113 AliACORDEDigitizer.cxx:114 AliACORDEDigitizer.cxx:115 AliACORDEDigitizer.cxx:116 AliACORDEDigitizer.cxx:117 AliACORDEDigitizer.cxx:118 AliACORDEDigitizer.cxx:119 AliACORDEDigitizer.cxx:120 AliACORDEDigitizer.cxx:121 AliACORDEDigitizer.cxx:122 AliACORDEDigitizer.cxx:123 AliACORDEDigitizer.cxx:124 AliACORDEDigitizer.cxx:125 AliACORDEDigitizer.cxx:126 AliACORDEDigitizer.cxx:127 AliACORDEDigitizer.cxx:128 AliACORDEDigitizer.cxx:129 AliACORDEDigitizer.cxx:130 AliACORDEDigitizer.cxx:131 AliACORDEDigitizer.cxx:132 AliACORDEDigitizer.cxx:133 AliACORDEDigitizer.cxx:134 AliACORDEDigitizer.cxx:135 AliACORDEDigitizer.cxx:136 AliACORDEDigitizer.cxx:137 AliACORDEDigitizer.cxx:138 AliACORDEDigitizer.cxx:139 AliACORDEDigitizer.cxx:140 AliACORDEDigitizer.cxx:141 AliACORDEDigitizer.cxx:142 AliACORDEDigitizer.cxx:143 AliACORDEDigitizer.cxx:144 AliACORDEDigitizer.cxx:145 AliACORDEDigitizer.cxx:146 AliACORDEDigitizer.cxx:147 AliACORDEDigitizer.cxx:148 AliACORDEDigitizer.cxx:149 AliACORDEDigitizer.cxx:150 AliACORDEDigitizer.cxx:151 AliACORDEDigitizer.cxx:152 AliACORDEDigitizer.cxx:153 AliACORDEDigitizer.cxx:154 AliACORDEDigitizer.cxx:155 AliACORDEDigitizer.cxx:156 AliACORDEDigitizer.cxx:157 AliACORDEDigitizer.cxx:158 AliACORDEDigitizer.cxx:159 AliACORDEDigitizer.cxx:160 AliACORDEDigitizer.cxx:161 AliACORDEDigitizer.cxx:162 AliACORDEDigitizer.cxx:163 AliACORDEDigitizer.cxx:164 AliACORDEDigitizer.cxx:165 AliACORDEDigitizer.cxx:166 AliACORDEDigitizer.cxx:167 AliACORDEDigitizer.cxx:168 AliACORDEDigitizer.cxx:169 AliACORDEDigitizer.cxx:170 AliACORDEDigitizer.cxx:171 AliACORDEDigitizer.cxx:172 AliACORDEDigitizer.cxx:173 AliACORDEDigitizer.cxx:174 AliACORDEDigitizer.cxx:175 AliACORDEDigitizer.cxx:176 AliACORDEDigitizer.cxx:177 AliACORDEDigitizer.cxx:178 AliACORDEDigitizer.cxx:179 AliACORDEDigitizer.cxx:180 AliACORDEDigitizer.cxx:181 AliACORDEDigitizer.cxx:182 AliACORDEDigitizer.cxx:183 AliACORDEDigitizer.cxx:184 AliACORDEDigitizer.cxx:185 AliACORDEDigitizer.cxx:186 AliACORDEDigitizer.cxx:187 AliACORDEDigitizer.cxx:188 AliACORDEDigitizer.cxx:189 AliACORDEDigitizer.cxx:190 AliACORDEDigitizer.cxx:191 AliACORDEDigitizer.cxx:192 AliACORDEDigitizer.cxx:193 AliACORDEDigitizer.cxx:194 AliACORDEDigitizer.cxx:195 AliACORDEDigitizer.cxx:196 AliACORDEDigitizer.cxx:197 AliACORDEDigitizer.cxx:198 AliACORDEDigitizer.cxx:199 AliACORDEDigitizer.cxx:200 AliACORDEDigitizer.cxx:201 AliACORDEDigitizer.cxx:202 AliACORDEDigitizer.cxx:203 AliACORDEDigitizer.cxx:204 AliACORDEDigitizer.cxx:205 AliACORDEDigitizer.cxx:206 AliACORDEDigitizer.cxx:207 AliACORDEDigitizer.cxx:208 AliACORDEDigitizer.cxx:209 AliACORDEDigitizer.cxx:210 AliACORDEDigitizer.cxx:211 AliACORDEDigitizer.cxx:212 AliACORDEDigitizer.cxx:213 AliACORDEDigitizer.cxx:214 AliACORDEDigitizer.cxx:215 AliACORDEDigitizer.cxx:216 AliACORDEDigitizer.cxx:217 AliACORDEDigitizer.cxx:218 AliACORDEDigitizer.cxx:219 AliACORDEDigitizer.cxx:220 AliACORDEDigitizer.cxx:221 AliACORDEDigitizer.cxx:222 AliACORDEDigitizer.cxx:223 AliACORDEDigitizer.cxx:224 AliACORDEDigitizer.cxx:225 AliACORDEDigitizer.cxx:226 AliACORDEDigitizer.cxx:227 AliACORDEDigitizer.cxx:228 AliACORDEDigitizer.cxx:229 AliACORDEDigitizer.cxx:230 AliACORDEDigitizer.cxx:231 AliACORDEDigitizer.cxx:232 AliACORDEDigitizer.cxx:233 AliACORDEDigitizer.cxx:234 AliACORDEDigitizer.cxx:235 AliACORDEDigitizer.cxx:236 AliACORDEDigitizer.cxx:237 AliACORDEDigitizer.cxx:238 AliACORDEDigitizer.cxx:239 AliACORDEDigitizer.cxx:240 AliACORDEDigitizer.cxx:241 AliACORDEDigitizer.cxx:242 AliACORDEDigitizer.cxx:243 AliACORDEDigitizer.cxx:244 AliACORDEDigitizer.cxx:245 AliACORDEDigitizer.cxx:246 AliACORDEDigitizer.cxx:247 AliACORDEDigitizer.cxx:248 AliACORDEDigitizer.cxx:249 AliACORDEDigitizer.cxx:250 AliACORDEDigitizer.cxx:251 AliACORDEDigitizer.cxx:252 AliACORDEDigitizer.cxx:253 AliACORDEDigitizer.cxx:254 AliACORDEDigitizer.cxx:255 AliACORDEDigitizer.cxx:256 AliACORDEDigitizer.cxx:257 AliACORDEDigitizer.cxx:258 AliACORDEDigitizer.cxx:259 AliACORDEDigitizer.cxx:260 AliACORDEDigitizer.cxx:261 AliACORDEDigitizer.cxx:262 AliACORDEDigitizer.cxx:263 AliACORDEDigitizer.cxx:264 AliACORDEDigitizer.cxx:265 AliACORDEDigitizer.cxx:266 AliACORDEDigitizer.cxx:267 AliACORDEDigitizer.cxx:268 AliACORDEDigitizer.cxx:269 AliACORDEDigitizer.cxx:270 AliACORDEDigitizer.cxx:271 AliACORDEDigitizer.cxx:272 AliACORDEDigitizer.cxx:273 AliACORDEDigitizer.cxx:274 AliACORDEDigitizer.cxx:275 AliACORDEDigitizer.cxx:276 AliACORDEDigitizer.cxx:277 AliACORDEDigitizer.cxx:278 AliACORDEDigitizer.cxx:279 AliACORDEDigitizer.cxx:280 AliACORDEDigitizer.cxx:281 AliACORDEDigitizer.cxx:282 AliACORDEDigitizer.cxx:283 AliACORDEDigitizer.cxx:284 AliACORDEDigitizer.cxx:285 AliACORDEDigitizer.cxx:286 AliACORDEDigitizer.cxx:287 AliACORDEDigitizer.cxx:288 AliACORDEDigitizer.cxx:289 AliACORDEDigitizer.cxx:290