#include <TClonesArray.h>
#include <TParticle.h>
#include <TTree.h>
#include "AliMUONSDigitizerV2.h"
#include "AliMUON.h"
#include "AliMUONChamber.h"
#include "AliMUONVDigit.h"
#include "AliMUONHit.h"
#include "AliMUONVDigitStore.h"
#include "AliMUONVHitStore.h"
#include "AliMUONResponseTrigger.h"
#include "AliMUONConstants.h"
#include "AliMpCDB.h"
#include "AliMpDEManager.h"
#include "AliLog.h"
#include "AliCDBManager.h"
#include "AliLoader.h"
#include "AliRun.h"
#include "AliRunLoader.h"
#include "AliHeader.h"
#include "AliGenCocktailEventHeader.h"
ClassImp(AliMUONSDigitizerV2)
Float_t AliMUONSDigitizerV2::fgkMaxIntTime = 10.0;
Float_t AliMUONSDigitizerV2::fgkMaxPosTimeDif = 1.22E-6;
Float_t AliMUONSDigitizerV2::fgkMaxNegTimeDif = -3.5E-6;
Float_t AliMUONSDigitizerV2::fgkMinTimeDif = 25E-9;
AliMUONSDigitizerV2::AliMUONSDigitizerV2()
: TNamed("AliMUONSDigitizerV2","From Hits to SDigits for MUON")
{
if ( ! AliMpCDB::LoadMpSegmentation() ) {
AliFatal("Could not access mapping from OCDB !");
}
}
AliMUONSDigitizerV2::~AliMUONSDigitizerV2()
{
}
void
AliMUONSDigitizerV2::Digitize(Option_t*)
{
AliDebug(1,"");
AliRunLoader* runLoader = AliRunLoader::Instance();
AliLoader* loader = runLoader->GetDetectorLoader("MUON");
loader->LoadHits("READ");
AliMUON* muon = static_cast<AliMUON*>(gAlice->GetModule("MUON"));
Int_t nofEvents(runLoader->GetNumberOfEvents());
TString classname = muon->DigitStoreClassName();
AliMUONVDigitStore* sDigitStore = AliMUONVDigitStore::Create(classname.Data());
if (!sDigitStore)
{
AliFatal(Form("Could not create digitstore of class %s",classname.Data()));
}
AliDebug(1,Form("Will use digitStore of type %s",sDigitStore->ClassName()));
for ( Int_t iEvent = 0; iEvent < nofEvents; ++iEvent )
{
TObjArray tdlist;
tdlist.SetOwner(kTRUE);
AliDebug(1,Form("iEvent=%d",iEvent));
runLoader->GetEvent(iEvent);
float t0=fgkMaxIntTime; int aa=0;
AliHeader* header = runLoader->GetHeader();
AliGenCocktailEventHeader* cocktailHeader =
dynamic_cast<AliGenCocktailEventHeader*>(header->GenEventHeader());
if (cocktailHeader) {
AliGenCocktailEventHeader* genEventHeader = (AliGenCocktailEventHeader*) (header->GenEventHeader());
TList* headers = genEventHeader->GetHeaders();
TIter nextH(headers);
AliGenEventHeader *entry;
while((entry = (AliGenEventHeader*)nextH())) {
float t = entry->InteractionTime();
if (TMath::Abs(t)<TMath::Abs(t0)) t0 = t;
aa++;
}
} else {
AliGenEventHeader* evtHeader =
(AliGenEventHeader*)(header->GenEventHeader());
if (evtHeader)
{
float t = evtHeader->InteractionTime();
if (TMath::Abs(t)<TMath::Abs(t0)) t0 = t;
aa++;
}
else
{
t0 = 0.;
}
}
loader->MakeSDigitsContainer();
TTree* treeS = loader->TreeS();
if ( !treeS )
{
AliFatal("");
}
sDigitStore->Connect(*treeS);
TTree* treeH = loader->TreeH();
AliMUONVHitStore* hitStore = AliMUONVHitStore::Create(*treeH);
hitStore->Connect(*treeH);
Long64_t nofTracks = treeH->GetEntries();
for ( Long64_t iTrack = 0; iTrack < nofTracks; ++iTrack )
{
treeH->GetEvent(iTrack);
AliMUONHit* hit;
TIter next(hitStore->CreateIterator());
Int_t ihit(0);
while ( ( hit = static_cast<AliMUONHit*>(next()) ) )
{
Int_t chamberId = hit->Chamber()-1;
Float_t age = hit->Age()-t0;
AliMUONChamber& chamber = muon->Chamber(chamberId);
AliMUONResponse* response = chamber.ResponseModel();
TList digits;
if (aa>1){
Float_t chamberTime = AliMUONConstants::AverageChamberT(chamberId);
Float_t timeDif=age-chamberTime;
if (timeDif>fgkMaxPosTimeDif || timeDif<fgkMaxNegTimeDif) {
continue;
}
if(TMath::Abs(timeDif)>fgkMinTimeDif){
response->DisIntegrate(*hit,digits,timeDif);
}
else{
response->DisIntegrate(*hit,digits,0.);
}
}
else{
response->DisIntegrate(*hit,digits,0.);
}
TIter nextd(&digits);
AliMUONVDigit* d;
while ( ( d = (AliMUONVDigit*)nextd() ) )
{
d->SetHit(ihit);
d->SetTime(age);
d->AddTrack(hit->GetTrack(),d->Charge());
tdlist.Add(d);
}
++ihit;
}
hitStore->Clear();
}
TIter next(&tdlist);
AliMUONVDigit* d;
while ( ( d = static_cast<AliMUONVDigit*>(next()) ) )
{
d->ChargeInFC(kTRUE);
AliMUONVDigit* added = sDigitStore->Add(*d,AliMUONVDigitStore::kMerge);
if (!added)
{
AliError("Could not add digit to digitStore");
}
}
treeS->Fill();
loader->WriteSDigits("OVERWRITE");
sDigitStore->Clear();
loader->UnloadSDigits();
delete hitStore;
}
loader->UnloadHits();
delete sDigitStore;
}
AliMUONSDigitizerV2.cxx:1 AliMUONSDigitizerV2.cxx:2 AliMUONSDigitizerV2.cxx:3 AliMUONSDigitizerV2.cxx:4 AliMUONSDigitizerV2.cxx:5 AliMUONSDigitizerV2.cxx:6 AliMUONSDigitizerV2.cxx:7 AliMUONSDigitizerV2.cxx:8 AliMUONSDigitizerV2.cxx:9 AliMUONSDigitizerV2.cxx:10 AliMUONSDigitizerV2.cxx:11 AliMUONSDigitizerV2.cxx:12 AliMUONSDigitizerV2.cxx:13 AliMUONSDigitizerV2.cxx:14 AliMUONSDigitizerV2.cxx:15 AliMUONSDigitizerV2.cxx:16 AliMUONSDigitizerV2.cxx:17 AliMUONSDigitizerV2.cxx:18 AliMUONSDigitizerV2.cxx:19 AliMUONSDigitizerV2.cxx:20 AliMUONSDigitizerV2.cxx:21 AliMUONSDigitizerV2.cxx:22 AliMUONSDigitizerV2.cxx:23 AliMUONSDigitizerV2.cxx:24 AliMUONSDigitizerV2.cxx:25 AliMUONSDigitizerV2.cxx:26 AliMUONSDigitizerV2.cxx:27 AliMUONSDigitizerV2.cxx:28 AliMUONSDigitizerV2.cxx:29 AliMUONSDigitizerV2.cxx:30 AliMUONSDigitizerV2.cxx:31 AliMUONSDigitizerV2.cxx:32 AliMUONSDigitizerV2.cxx:33 AliMUONSDigitizerV2.cxx:34 AliMUONSDigitizerV2.cxx:35 AliMUONSDigitizerV2.cxx:36 AliMUONSDigitizerV2.cxx:37 AliMUONSDigitizerV2.cxx:38 AliMUONSDigitizerV2.cxx:39 AliMUONSDigitizerV2.cxx:40 AliMUONSDigitizerV2.cxx:41 AliMUONSDigitizerV2.cxx:42 AliMUONSDigitizerV2.cxx:43 AliMUONSDigitizerV2.cxx:44 AliMUONSDigitizerV2.cxx:45 AliMUONSDigitizerV2.cxx:46 AliMUONSDigitizerV2.cxx:47 AliMUONSDigitizerV2.cxx:48 AliMUONSDigitizerV2.cxx:49 AliMUONSDigitizerV2.cxx:50 AliMUONSDigitizerV2.cxx:51 AliMUONSDigitizerV2.cxx:52 AliMUONSDigitizerV2.cxx:53 AliMUONSDigitizerV2.cxx:54 AliMUONSDigitizerV2.cxx:55 AliMUONSDigitizerV2.cxx:56 AliMUONSDigitizerV2.cxx:57 AliMUONSDigitizerV2.cxx:58 AliMUONSDigitizerV2.cxx:59 AliMUONSDigitizerV2.cxx:60 AliMUONSDigitizerV2.cxx:61 AliMUONSDigitizerV2.cxx:62 AliMUONSDigitizerV2.cxx:63 AliMUONSDigitizerV2.cxx:64 AliMUONSDigitizerV2.cxx:65 AliMUONSDigitizerV2.cxx:66 AliMUONSDigitizerV2.cxx:67 AliMUONSDigitizerV2.cxx:68 AliMUONSDigitizerV2.cxx:69 AliMUONSDigitizerV2.cxx:70 AliMUONSDigitizerV2.cxx:71 AliMUONSDigitizerV2.cxx:72 AliMUONSDigitizerV2.cxx:73 AliMUONSDigitizerV2.cxx:74 AliMUONSDigitizerV2.cxx:75 AliMUONSDigitizerV2.cxx:76 AliMUONSDigitizerV2.cxx:77 AliMUONSDigitizerV2.cxx:78 AliMUONSDigitizerV2.cxx:79 AliMUONSDigitizerV2.cxx:80 AliMUONSDigitizerV2.cxx:81 AliMUONSDigitizerV2.cxx:82 AliMUONSDigitizerV2.cxx:83 AliMUONSDigitizerV2.cxx:84 AliMUONSDigitizerV2.cxx:85 AliMUONSDigitizerV2.cxx:86 AliMUONSDigitizerV2.cxx:87 AliMUONSDigitizerV2.cxx:88 AliMUONSDigitizerV2.cxx:89 AliMUONSDigitizerV2.cxx:90 AliMUONSDigitizerV2.cxx:91 AliMUONSDigitizerV2.cxx:92 AliMUONSDigitizerV2.cxx:93 AliMUONSDigitizerV2.cxx:94 AliMUONSDigitizerV2.cxx:95 AliMUONSDigitizerV2.cxx:96 AliMUONSDigitizerV2.cxx:97 AliMUONSDigitizerV2.cxx:98 AliMUONSDigitizerV2.cxx:99 AliMUONSDigitizerV2.cxx:100 AliMUONSDigitizerV2.cxx:101 AliMUONSDigitizerV2.cxx:102 AliMUONSDigitizerV2.cxx:103 AliMUONSDigitizerV2.cxx:104 AliMUONSDigitizerV2.cxx:105 AliMUONSDigitizerV2.cxx:106 AliMUONSDigitizerV2.cxx:107 AliMUONSDigitizerV2.cxx:108 AliMUONSDigitizerV2.cxx:109 AliMUONSDigitizerV2.cxx:110 AliMUONSDigitizerV2.cxx:111 AliMUONSDigitizerV2.cxx:112 AliMUONSDigitizerV2.cxx:113 AliMUONSDigitizerV2.cxx:114 AliMUONSDigitizerV2.cxx:115 AliMUONSDigitizerV2.cxx:116 AliMUONSDigitizerV2.cxx:117 AliMUONSDigitizerV2.cxx:118 AliMUONSDigitizerV2.cxx:119 AliMUONSDigitizerV2.cxx:120 AliMUONSDigitizerV2.cxx:121 AliMUONSDigitizerV2.cxx:122 AliMUONSDigitizerV2.cxx:123 AliMUONSDigitizerV2.cxx:124 AliMUONSDigitizerV2.cxx:125 AliMUONSDigitizerV2.cxx:126 AliMUONSDigitizerV2.cxx:127 AliMUONSDigitizerV2.cxx:128 AliMUONSDigitizerV2.cxx:129 AliMUONSDigitizerV2.cxx:130 AliMUONSDigitizerV2.cxx:131 AliMUONSDigitizerV2.cxx:132 AliMUONSDigitizerV2.cxx:133 AliMUONSDigitizerV2.cxx:134 AliMUONSDigitizerV2.cxx:135 AliMUONSDigitizerV2.cxx:136 AliMUONSDigitizerV2.cxx:137 AliMUONSDigitizerV2.cxx:138 AliMUONSDigitizerV2.cxx:139 AliMUONSDigitizerV2.cxx:140 AliMUONSDigitizerV2.cxx:141 AliMUONSDigitizerV2.cxx:142 AliMUONSDigitizerV2.cxx:143 AliMUONSDigitizerV2.cxx:144 AliMUONSDigitizerV2.cxx:145 AliMUONSDigitizerV2.cxx:146 AliMUONSDigitizerV2.cxx:147 AliMUONSDigitizerV2.cxx:148 AliMUONSDigitizerV2.cxx:149 AliMUONSDigitizerV2.cxx:150 AliMUONSDigitizerV2.cxx:151 AliMUONSDigitizerV2.cxx:152 AliMUONSDigitizerV2.cxx:153 AliMUONSDigitizerV2.cxx:154 AliMUONSDigitizerV2.cxx:155 AliMUONSDigitizerV2.cxx:156 AliMUONSDigitizerV2.cxx:157 AliMUONSDigitizerV2.cxx:158 AliMUONSDigitizerV2.cxx:159 AliMUONSDigitizerV2.cxx:160 AliMUONSDigitizerV2.cxx:161 AliMUONSDigitizerV2.cxx:162 AliMUONSDigitizerV2.cxx:163 AliMUONSDigitizerV2.cxx:164 AliMUONSDigitizerV2.cxx:165 AliMUONSDigitizerV2.cxx:166 AliMUONSDigitizerV2.cxx:167 AliMUONSDigitizerV2.cxx:168 AliMUONSDigitizerV2.cxx:169 AliMUONSDigitizerV2.cxx:170 AliMUONSDigitizerV2.cxx:171 AliMUONSDigitizerV2.cxx:172 AliMUONSDigitizerV2.cxx:173 AliMUONSDigitizerV2.cxx:174 AliMUONSDigitizerV2.cxx:175 AliMUONSDigitizerV2.cxx:176 AliMUONSDigitizerV2.cxx:177 AliMUONSDigitizerV2.cxx:178 AliMUONSDigitizerV2.cxx:179 AliMUONSDigitizerV2.cxx:180 AliMUONSDigitizerV2.cxx:181 AliMUONSDigitizerV2.cxx:182 AliMUONSDigitizerV2.cxx:183 AliMUONSDigitizerV2.cxx:184 AliMUONSDigitizerV2.cxx:185 AliMUONSDigitizerV2.cxx:186 AliMUONSDigitizerV2.cxx:187 AliMUONSDigitizerV2.cxx:188 AliMUONSDigitizerV2.cxx:189 AliMUONSDigitizerV2.cxx:190 AliMUONSDigitizerV2.cxx:191 AliMUONSDigitizerV2.cxx:192 AliMUONSDigitizerV2.cxx:193 AliMUONSDigitizerV2.cxx:194 AliMUONSDigitizerV2.cxx:195 AliMUONSDigitizerV2.cxx:196 AliMUONSDigitizerV2.cxx:197 AliMUONSDigitizerV2.cxx:198 AliMUONSDigitizerV2.cxx:199 AliMUONSDigitizerV2.cxx:200 AliMUONSDigitizerV2.cxx:201 AliMUONSDigitizerV2.cxx:202 AliMUONSDigitizerV2.cxx:203 AliMUONSDigitizerV2.cxx:204 AliMUONSDigitizerV2.cxx:205 AliMUONSDigitizerV2.cxx:206 AliMUONSDigitizerV2.cxx:207 AliMUONSDigitizerV2.cxx:208 AliMUONSDigitizerV2.cxx:209 AliMUONSDigitizerV2.cxx:210 AliMUONSDigitizerV2.cxx:211 AliMUONSDigitizerV2.cxx:212 AliMUONSDigitizerV2.cxx:213 AliMUONSDigitizerV2.cxx:214 AliMUONSDigitizerV2.cxx:215 AliMUONSDigitizerV2.cxx:216 AliMUONSDigitizerV2.cxx:217 AliMUONSDigitizerV2.cxx:218 AliMUONSDigitizerV2.cxx:219 AliMUONSDigitizerV2.cxx:220 AliMUONSDigitizerV2.cxx:221 AliMUONSDigitizerV2.cxx:222 AliMUONSDigitizerV2.cxx:223 AliMUONSDigitizerV2.cxx:224 AliMUONSDigitizerV2.cxx:225 AliMUONSDigitizerV2.cxx:226 AliMUONSDigitizerV2.cxx:227 AliMUONSDigitizerV2.cxx:228 AliMUONSDigitizerV2.cxx:229 AliMUONSDigitizerV2.cxx:230 AliMUONSDigitizerV2.cxx:231 AliMUONSDigitizerV2.cxx:232 AliMUONSDigitizerV2.cxx:233 AliMUONSDigitizerV2.cxx:234 AliMUONSDigitizerV2.cxx:235 AliMUONSDigitizerV2.cxx:236 AliMUONSDigitizerV2.cxx:237 AliMUONSDigitizerV2.cxx:238 AliMUONSDigitizerV2.cxx:239 AliMUONSDigitizerV2.cxx:240 AliMUONSDigitizerV2.cxx:241 AliMUONSDigitizerV2.cxx:242 AliMUONSDigitizerV2.cxx:243 AliMUONSDigitizerV2.cxx:244 AliMUONSDigitizerV2.cxx:245 AliMUONSDigitizerV2.cxx:246 AliMUONSDigitizerV2.cxx:247 AliMUONSDigitizerV2.cxx:248 AliMUONSDigitizerV2.cxx:249 AliMUONSDigitizerV2.cxx:250 AliMUONSDigitizerV2.cxx:251 AliMUONSDigitizerV2.cxx:252 AliMUONSDigitizerV2.cxx:253 AliMUONSDigitizerV2.cxx:254 AliMUONSDigitizerV2.cxx:255 AliMUONSDigitizerV2.cxx:256 AliMUONSDigitizerV2.cxx:257 AliMUONSDigitizerV2.cxx:258 AliMUONSDigitizerV2.cxx:259 AliMUONSDigitizerV2.cxx:260 AliMUONSDigitizerV2.cxx:261 AliMUONSDigitizerV2.cxx:262 AliMUONSDigitizerV2.cxx:263 AliMUONSDigitizerV2.cxx:264 AliMUONSDigitizerV2.cxx:265 AliMUONSDigitizerV2.cxx:266 AliMUONSDigitizerV2.cxx:267 AliMUONSDigitizerV2.cxx:268