X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;ds=sidebyside;f=PHOS%2FAliPHOSDA2.cxx;h=047bd1b403f463ac95ebefd5d5fab2c574876702;hb=9702957b95682e02f95f1540be8649a7d3dd9482;hp=c4a86f50bc659da0b8b6e12c4d90e6c3af58d4cb;hpb=7708b003f554347667a7e3e553e5cdad993867b9;p=u%2Fmrichter%2FAliRoot.git diff --git a/PHOS/AliPHOSDA2.cxx b/PHOS/AliPHOSDA2.cxx index c4a86f50bc6..047bd1b403f 100644 --- a/PHOS/AliPHOSDA2.cxx +++ b/PHOS/AliPHOSDA2.cxx @@ -14,13 +14,15 @@ AliPHOSDA2::AliPHOSDA2(int module) : TNamed(), // Root file name: PHOS_ModuleX_BCM.root, where X - module number. char name[128]; - sprintf(name,"PHOS_Module%d_BCM",fMod); + TString sname="PHOS_Module%d_BCM"; + snprintf(name,sname.Length(),sname.Data(),fMod); SetName(name); SetTitle("Detector Algorithm to check for PHOS channels quality"); char rootname[128]; - sprintf(rootname,"%s.root",GetName()); + TString srootname="%s.root"; + snprintf(rootname,srootname.Length(),srootname.Data(),GetName()); fHistoFile = new TFile(rootname,"recreate"); // new file! @@ -39,6 +41,48 @@ AliPHOSDA2::AliPHOSDA2(int module) : TNamed(), } +//---------------------------------------------------------------- +AliPHOSDA2::AliPHOSDA2(Int_t module, TObjArray* oldHistos) : TNamed(), + fHistoFile(0),fFiredCells(0),fMod(module) + +{ + // Create AliPHOSDA2 ("Bad channels finder") object. + // module is the PHOS module number (0..4). + // Quality histogram names: module_iX_iZ_gain. + // Read histograms from array oldHistos (if any). + // Do not produce an output file! + + char name[128]; + TString sname="PHOS_Module%d_BCM"; + snprintf(name,sname.Length(),sname.Data(),fMod); + SetName(name); + + SetTitle("Detector Algorithm to check for PHOS channels quality"); + + char hname[128]; + TH1F* hist1=0; + TString shname = "%d_%d_%d_%d"; + + for(Int_t iX=0; iX<64; iX++) { + for(Int_t iZ=0; iZ<56; iZ++) { + for(Int_t iGain=0; iGain<2; iGain++) { + snprintf(hname,shname.Length(),shname.Data(),fMod,iX,iZ,iGain); + if(oldHistos) + hist1 = (TH1F*)oldHistos->FindObject(hname); + if(hist1) fHQuality[iX][iZ][iGain] = hist1; + else + fHQuality[iX][iZ][iGain] = 0; + } + } + } + + fMaps[0]=0; + fMaps[1]=0; + + fFiredCells = new TH1I("fFiredCells","Number of fired cells per event",100,0,1000); + +} + //------------------------------------------------------------------- AliPHOSDA2::AliPHOSDA2(const AliPHOSDA2& da) : TNamed(da), fHistoFile(0),fFiredCells(0),fMod(da.fMod) @@ -47,12 +91,13 @@ AliPHOSDA2::AliPHOSDA2(const AliPHOSDA2& da) : TNamed(da), char hname[128]; TH1F* hist1=0; + TString shname = "%d_%d_%d_%d"; for(Int_t iX=0; iX<64; iX++) { for(Int_t iZ=0; iZ<56; iZ++) { for(Int_t iGain=0; iGain<2; iGain++) { - sprintf(hname,"%d_%d_%d_%d",fMod,iX,iZ,iGain); + snprintf(hname,shname.Length(),shname.Data(),fMod,iX,iZ,iGain); hist1 = (TH1F*)da.fHistoFile->Get(hname); if(hist1) fHQuality[iX][iZ][iGain] = new TH1F(*hist1); else @@ -158,8 +203,8 @@ void AliPHOSDA2::FillQualityHistograms(Float_t quality[64][56][2]) if(fHQuality[iX][iZ][iGain]) fHQuality[iX][iZ][iGain]->Fill(quality[iX][iZ][iGain]); else { - sprintf(hname,"%d_%d_%d_%d",fMod,iX,iZ,iGain); - sprintf(htitl,"Quality for crystal %d_%d_%d and gain %d",fMod,iX,iZ,iGain); + snprintf(hname,128,"%d_%d_%d_%d",fMod,iX,iZ,iGain); + snprintf(htitl,128,"Quality for crystal %d_%d_%d and gain %d",fMod,iX,iZ,iGain); fHQuality[iX][iZ][iGain] = new TH1F(hname,htitl,100,1.e-6,10.); fHQuality[iX][iZ][iGain]->Fill(quality[iX][iZ][iGain]); } @@ -189,14 +234,14 @@ void AliPHOSDA2::UpdateHistoFile() if(fMaps[0]) fMaps[0]->Reset(); else { - sprintf(titl,"Quality map for Low gain"); + snprintf(titl,128,"Quality map for Low gain"); fMaps[0] = new TH2F("gmaplow", titl, 64,0.,64.,56,0.,56.); } if(fMaps[1]) fMaps[1]->Reset(); else { - sprintf(titl,"Quality map for High gain"); + snprintf(titl,128,"Quality map for High gain"); fMaps[1] = new TH2F("gmaphigh", titl, 64,0.,64.,56,0.,56.); }