void readDigits(){ gSystem->Load("libITSUpgradeBase"); gSystem->Load("libITSUpgradeSim"); gROOT->SetStyle("Plain"); const Int_t kMaxROCycleAccept=126; gAlice=NULL; AliRunLoader* runLoader = AliRunLoader::Open("galice.root"); runLoader->LoadgAlice(); gAlice = runLoader->GetAliRun(); runLoader->LoadHeader(); runLoader->LoadKinematics(); runLoader->LoadSDigits(); runLoader->LoadDigits(); AliGeomManager::LoadGeometry("geometry.root"); AliITSUGeomTGeo* gm = new AliITSUGeomTGeo(kTRUE,kTRUE); // Int_t nLayers = gm->GetNLayers(); Int_t nModules = gm->GetNModules(); Int_t nbins=100; Int_t xmin=0; Int_t xmax=50000;//00*1e-09; TH1D **hNelSDig = new TH1D*[nLayers], **hNelDig = new TH1D*[nLayers]; // for(Int_t i=0; i< nLayers; i++ ) { hNelSDig[i] = new TH1D(Form("hNelSDig%i",i),Form("electron distribution in SDigits [ Layer %i] ",i),nbins,xmin,xmax); hNelSDig[i]->SetXTitle("N electrons"); hNelDig[i] = new TH1D(Form("hNelDig%i",i),Form("electron distribution in Digits [ Layer %i] ",i),nbins,xmin,xmax); hNelDig[i]->SetXTitle("N electrons"); } AliLoader *dl = runLoader->GetDetectorLoader("ITS"); //SDIGITS INIT TTree * sDigTree = 0x0; TClonesArray *sDigArr= new TClonesArray("AliITSUSDigit"); //DIGITS INIT TTree * digTree = 0x0; TClonesArray *digArr= new TClonesArray("AliITSUDigitPix"); printf("N Events : %i \n",(Int_t)runLoader->GetNumberOfEvents()); for (Int_t iEvent = 0; iEvent < runLoader->GetNumberOfEvents(); iEvent++) { printf("\n Event %i \n",iEvent); runLoader->GetEvent(iEvent); AliStack *stack = runLoader->Stack(); sDigTree=dl->TreeS(); digTree=dl->TreeD(); // sDigTree->SetBranchAddress("ITS",&sDigArr); digTree->SetBranchAddress("ITSDigitsPix",&digArr); for (int imod=0;imodGetEntry(imod); digTree->GetEntry(imod); int detType = gm->GetModuleDetTypeID(imod); AliITSUSegmentationPix* segm = (AliITSUSegmentationPix*)gm->GetSegmentationByID(detType); int lay,lad,det; int nsdig = sDigArr->GetEntries(); int ndig = digArr->GetEntries(); if (nsdig<1) continue; gm->GetModuleId(imod, lay,lad,det); printf("\nModule %3d: (det %2d in ladder %2d of Layer %d) |NSDigits: %4d NDigits: %4d\n",imod,det,lad,lay,nsdig,ndig); // for (int isdig=0;isdigAt(isdig); int sdinfo = pSdig->GetUniqueID(); UInt_t row,col; Int_t cycle; AliITSUSensMap::GetCell(sdinfo,segm->Npz(),segm->Npx(),kMaxROCycleAccept,col,row,cycle); printf("#%3d Sdigit col:%4d/row:%4d/cycle:%d generated by track %5d (%s)\t",isdig, col,row,cycle, pSdig->GetTrack(0),stack->Particle(pSdig->GetTrack(0))->GetName()); pSdig->Print(); hNelSDig[lay]->Fill(pSdig->GetSignal()); } // for (int idig=0;idigAt(idig); printf("#%3d digit, col:%4d/row:%4d ROCycle:%d signal: %.2e, generated by tracks ",idig,pDig->GetCoord1(),pDig->GetCoord2(), pDig->GetROCycle(),pDig->GetSignalPix()); for (int itr=0;itrGetNTracks();itr++) if (pDig->GetTrack(itr)>=0) printf(" %5d",pDig->GetTrack(itr)); printf("\n"); // hNelDig[lay]->Fill(pDig->GetSignalPix()); } // } }//event loop TCanvas *cSd = new TCanvas("cSd","Summable Digits",1000,800); cSd->Divide(nLayers&0x1 ? (nLayers/2+1) : nLayers/2,2); TCanvas *cD = new TCanvas("cD","Digits",1000,800); cD->Divide(nLayers&0x1 ? (nLayers/2+1) : nLayers/2,2); for(Int_t ip =1; ip<=nLayers; ip++){ cSd->cd(ip); hNelSDig[ip-1]->Draw(); cD->cd(ip); hNelDig[ip-1]->Draw(); } }