#include "AliMUONGainEventGenerator.h"
#include "AliMUONCalibrationData.h"
#include "AliMUONVStore.h"
#include "AliMUONVCalibParam.h"
#include <TRandom.h>
#include "AliCDBEntry.h"
#include "AliCDBManager.h"
#include "AliMUONPedestalEventGenerator.h"
#include "AliLog.h"
#include <TROOT.h>
#include <TSystem.h>
#include "AliMUONDigitizerV3.h"
#include "AliCodeTimer.h"
ClassImp(AliMUONGainEventGenerator)
AliMUONGainEventGenerator::AliMUONGainEventGenerator( Int_t sourceGainRunNumber,
Int_t sourcePedRunNumber,
Int_t nEventsPerFile,
const char* dateBaseFileName)
: TTask("AliMUONGainEventGenerator","Generate gain raw data files"),
fNofEventsPerFile(nEventsPerFile),
fSourcePedestalRunNumber(sourcePedRunNumber),
fDateBaseFileName(dateBaseFileName),
fSourceGains(AliMUONCalibrationData::CreateGains(sourceGainRunNumber)),
fSourcePedestals(AliMUONCalibrationData::CreatePedestals(fSourcePedestalRunNumber))
{
if (!fSourceGains)
{
AliFatal(Form("Cannot get gains for run %d",sourceGainRunNumber));
}
if (!fSourcePedestals)
{
AliFatal(Form("Cannot get pedestals for run %d",sourcePedRunNumber));
}
}
AliMUONGainEventGenerator::~AliMUONGainEventGenerator()
{
delete fSourceGains;
delete fSourcePedestals;
}
void
AliMUONGainEventGenerator::Exec(Option_t*)
{
AliCodeTimer::Instance()->Reset();
const Int_t kNInjections = 9;
Float_t injections[kNInjections] = { 0, 200 , 400, 800, 1200, 1600,
2000, 2500, 3000 };
for ( Int_t i = 0; i < kNInjections; ++i )
{
Int_t runNumber = fSourcePedestalRunNumber + i;
if (i)
{
GeneratePedestals(runNumber,injections[i]);
}
TString pwd(gSystem->WorkingDirectory());
TString dir(Form("%s/RUN%d",pwd.Data(),runNumber));
AliInfo(Form("Creating directory %s",dir.Data()));
gSystem->MakeDirectory(dir.Data());
gSystem->ChangeDirectory(dir.Data());
AliCodeTimerAuto(Form("generation of pedestal for run %d",runNumber),0);
TString pedfile;
if ( fDateBaseFileName.Length() > 0 ) pedfile = Form("%s.%d",fDateBaseFileName.Data(),runNumber);
AliMUONPedestalEventGenerator pgen(runNumber,fNofEventsPerFile,pedfile.Data());
AliInfo(Form("Generating pedestal events for injection number %d. Please be patient.",i));
pgen.Exec("");
gSystem->ChangeDirectory(pwd.Data());
}
AliCodeTimer::Instance()->Print();
}
void
AliMUONGainEventGenerator::GeneratePedestals(Int_t runNumber, Float_t injection)
{
AliCodeTimerAuto(Form("Run %d injection %7.2f",runNumber,injection),0);
TIter next(fSourceGains->CreateIterator());
AliMUONVStore* generatedPedestals = fSourcePedestals->Create();
AliMUONVCalibParam* gain;
AliMUONVCalibParam* ped;
while ( ( gain = static_cast<AliMUONVCalibParam*>(next()) ) )
{
ped = static_cast<AliMUONVCalibParam*>(fSourcePedestals->FindObject(gain->ID0(),gain->ID1()));
AliMUONVCalibParam* genPed = static_cast<AliMUONVCalibParam*>(generatedPedestals->FindObject(gain->ID0(),gain->ID1()));
if (!genPed)
{
genPed = static_cast<AliMUONVCalibParam*>(ped->Clone());
generatedPedestals->Add(genPed);
}
for ( Int_t i = 0; i < ped->Size(); ++i )
{
Float_t mean = ped->ValueAsFloat(i,0);
if ( mean == AliMUONVCalibParam::InvalidFloatValue() )
{
continue;
}
Int_t adc = AliMUONDigitizerV3::DecalibrateTrackerDigit(*ped,gain,i,
injection,kFALSE);
Float_t res = (ped->ValueAsFloat(i,1)/mean);
genPed->SetValueAsFloat(i,0,adc);
genPed->SetValueAsFloat(i,1,adc*res);
}
}
WriteToCDB(generatedPedestals,runNumber);
delete generatedPedestals;
}
void
AliMUONGainEventGenerator::WriteToCDB(TObject* object, Int_t runNumber)
{
AliCDBId id("MUON/Calib/Pedestals",runNumber,runNumber);
AliCDBMetaData md;
md.SetAliRootVersion(gROOT->GetVersion());
md.SetComment("Pedestal values generated from AliMUONGainEventGenerator");
md.SetResponsible("AliMUONGainEventGenerator");
AliCDBManager* man = AliCDBManager::Instance();
man->SetDefaultStorage("local://$ALICE_ROOT/OCDB/SHUTTLE/TestShuttle/TestCDB");
man->Put(object,id,&md);
}
AliMUONGainEventGenerator.cxx:1 AliMUONGainEventGenerator.cxx:2 AliMUONGainEventGenerator.cxx:3 AliMUONGainEventGenerator.cxx:4 AliMUONGainEventGenerator.cxx:5 AliMUONGainEventGenerator.cxx:6 AliMUONGainEventGenerator.cxx:7 AliMUONGainEventGenerator.cxx:8 AliMUONGainEventGenerator.cxx:9 AliMUONGainEventGenerator.cxx:10 AliMUONGainEventGenerator.cxx:11 AliMUONGainEventGenerator.cxx:12 AliMUONGainEventGenerator.cxx:13 AliMUONGainEventGenerator.cxx:14 AliMUONGainEventGenerator.cxx:15 AliMUONGainEventGenerator.cxx:16 AliMUONGainEventGenerator.cxx:17 AliMUONGainEventGenerator.cxx:18 AliMUONGainEventGenerator.cxx:19 AliMUONGainEventGenerator.cxx:20 AliMUONGainEventGenerator.cxx:21 AliMUONGainEventGenerator.cxx:22 AliMUONGainEventGenerator.cxx:23 AliMUONGainEventGenerator.cxx:24 AliMUONGainEventGenerator.cxx:25 AliMUONGainEventGenerator.cxx:26 AliMUONGainEventGenerator.cxx:27 AliMUONGainEventGenerator.cxx:28 AliMUONGainEventGenerator.cxx:29 AliMUONGainEventGenerator.cxx:30 AliMUONGainEventGenerator.cxx:31 AliMUONGainEventGenerator.cxx:32 AliMUONGainEventGenerator.cxx:33 AliMUONGainEventGenerator.cxx:34 AliMUONGainEventGenerator.cxx:35 AliMUONGainEventGenerator.cxx:36 AliMUONGainEventGenerator.cxx:37 AliMUONGainEventGenerator.cxx:38 AliMUONGainEventGenerator.cxx:39 AliMUONGainEventGenerator.cxx:40 AliMUONGainEventGenerator.cxx:41 AliMUONGainEventGenerator.cxx:42 AliMUONGainEventGenerator.cxx:43 AliMUONGainEventGenerator.cxx:44 AliMUONGainEventGenerator.cxx:45 AliMUONGainEventGenerator.cxx:46 AliMUONGainEventGenerator.cxx:47 AliMUONGainEventGenerator.cxx:48 AliMUONGainEventGenerator.cxx:49 AliMUONGainEventGenerator.cxx:50 AliMUONGainEventGenerator.cxx:51 AliMUONGainEventGenerator.cxx:52 AliMUONGainEventGenerator.cxx:53 AliMUONGainEventGenerator.cxx:54 AliMUONGainEventGenerator.cxx:55 AliMUONGainEventGenerator.cxx:56 AliMUONGainEventGenerator.cxx:57 AliMUONGainEventGenerator.cxx:58 AliMUONGainEventGenerator.cxx:59 AliMUONGainEventGenerator.cxx:60 AliMUONGainEventGenerator.cxx:61 AliMUONGainEventGenerator.cxx:62 AliMUONGainEventGenerator.cxx:63 AliMUONGainEventGenerator.cxx:64 AliMUONGainEventGenerator.cxx:65 AliMUONGainEventGenerator.cxx:66 AliMUONGainEventGenerator.cxx:67 AliMUONGainEventGenerator.cxx:68 AliMUONGainEventGenerator.cxx:69 AliMUONGainEventGenerator.cxx:70 AliMUONGainEventGenerator.cxx:71 AliMUONGainEventGenerator.cxx:72 AliMUONGainEventGenerator.cxx:73 AliMUONGainEventGenerator.cxx:74 AliMUONGainEventGenerator.cxx:75 AliMUONGainEventGenerator.cxx:76 AliMUONGainEventGenerator.cxx:77 AliMUONGainEventGenerator.cxx:78 AliMUONGainEventGenerator.cxx:79 AliMUONGainEventGenerator.cxx:80 AliMUONGainEventGenerator.cxx:81 AliMUONGainEventGenerator.cxx:82 AliMUONGainEventGenerator.cxx:83 AliMUONGainEventGenerator.cxx:84 AliMUONGainEventGenerator.cxx:85 AliMUONGainEventGenerator.cxx:86 AliMUONGainEventGenerator.cxx:87 AliMUONGainEventGenerator.cxx:88 AliMUONGainEventGenerator.cxx:89 AliMUONGainEventGenerator.cxx:90 AliMUONGainEventGenerator.cxx:91 AliMUONGainEventGenerator.cxx:92 AliMUONGainEventGenerator.cxx:93 AliMUONGainEventGenerator.cxx:94 AliMUONGainEventGenerator.cxx:95 AliMUONGainEventGenerator.cxx:96 AliMUONGainEventGenerator.cxx:97 AliMUONGainEventGenerator.cxx:98 AliMUONGainEventGenerator.cxx:99 AliMUONGainEventGenerator.cxx:100 AliMUONGainEventGenerator.cxx:101 AliMUONGainEventGenerator.cxx:102 AliMUONGainEventGenerator.cxx:103 AliMUONGainEventGenerator.cxx:104 AliMUONGainEventGenerator.cxx:105 AliMUONGainEventGenerator.cxx:106 AliMUONGainEventGenerator.cxx:107 AliMUONGainEventGenerator.cxx:108 AliMUONGainEventGenerator.cxx:109 AliMUONGainEventGenerator.cxx:110 AliMUONGainEventGenerator.cxx:111 AliMUONGainEventGenerator.cxx:112 AliMUONGainEventGenerator.cxx:113 AliMUONGainEventGenerator.cxx:114 AliMUONGainEventGenerator.cxx:115 AliMUONGainEventGenerator.cxx:116 AliMUONGainEventGenerator.cxx:117 AliMUONGainEventGenerator.cxx:118 AliMUONGainEventGenerator.cxx:119 AliMUONGainEventGenerator.cxx:120 AliMUONGainEventGenerator.cxx:121 AliMUONGainEventGenerator.cxx:122 AliMUONGainEventGenerator.cxx:123 AliMUONGainEventGenerator.cxx:124 AliMUONGainEventGenerator.cxx:125 AliMUONGainEventGenerator.cxx:126 AliMUONGainEventGenerator.cxx:127 AliMUONGainEventGenerator.cxx:128 AliMUONGainEventGenerator.cxx:129 AliMUONGainEventGenerator.cxx:130 AliMUONGainEventGenerator.cxx:131 AliMUONGainEventGenerator.cxx:132 AliMUONGainEventGenerator.cxx:133 AliMUONGainEventGenerator.cxx:134 AliMUONGainEventGenerator.cxx:135 AliMUONGainEventGenerator.cxx:136 AliMUONGainEventGenerator.cxx:137 AliMUONGainEventGenerator.cxx:138 AliMUONGainEventGenerator.cxx:139 AliMUONGainEventGenerator.cxx:140 AliMUONGainEventGenerator.cxx:141 AliMUONGainEventGenerator.cxx:142 AliMUONGainEventGenerator.cxx:143 AliMUONGainEventGenerator.cxx:144 AliMUONGainEventGenerator.cxx:145 AliMUONGainEventGenerator.cxx:146 AliMUONGainEventGenerator.cxx:147 AliMUONGainEventGenerator.cxx:148 AliMUONGainEventGenerator.cxx:149 AliMUONGainEventGenerator.cxx:150 AliMUONGainEventGenerator.cxx:151 AliMUONGainEventGenerator.cxx:152 AliMUONGainEventGenerator.cxx:153 AliMUONGainEventGenerator.cxx:154 AliMUONGainEventGenerator.cxx:155 AliMUONGainEventGenerator.cxx:156 AliMUONGainEventGenerator.cxx:157 AliMUONGainEventGenerator.cxx:158 AliMUONGainEventGenerator.cxx:159 AliMUONGainEventGenerator.cxx:160 AliMUONGainEventGenerator.cxx:161 AliMUONGainEventGenerator.cxx:162 AliMUONGainEventGenerator.cxx:163 AliMUONGainEventGenerator.cxx:164 AliMUONGainEventGenerator.cxx:165 AliMUONGainEventGenerator.cxx:166 AliMUONGainEventGenerator.cxx:167 AliMUONGainEventGenerator.cxx:168 AliMUONGainEventGenerator.cxx:169 AliMUONGainEventGenerator.cxx:170 AliMUONGainEventGenerator.cxx:171 AliMUONGainEventGenerator.cxx:172 AliMUONGainEventGenerator.cxx:173 AliMUONGainEventGenerator.cxx:174 AliMUONGainEventGenerator.cxx:175 AliMUONGainEventGenerator.cxx:176 AliMUONGainEventGenerator.cxx:177 AliMUONGainEventGenerator.cxx:178 AliMUONGainEventGenerator.cxx:179 AliMUONGainEventGenerator.cxx:180 AliMUONGainEventGenerator.cxx:181 AliMUONGainEventGenerator.cxx:182 AliMUONGainEventGenerator.cxx:183 AliMUONGainEventGenerator.cxx:184 AliMUONGainEventGenerator.cxx:185 AliMUONGainEventGenerator.cxx:186 AliMUONGainEventGenerator.cxx:187 AliMUONGainEventGenerator.cxx:188 AliMUONGainEventGenerator.cxx:189 AliMUONGainEventGenerator.cxx:190 AliMUONGainEventGenerator.cxx:191 AliMUONGainEventGenerator.cxx:192 AliMUONGainEventGenerator.cxx:193 AliMUONGainEventGenerator.cxx:194 AliMUONGainEventGenerator.cxx:195