}
if(fSaveHistograms ) {
+
+ Terminate(diagFile);
+
AliInfo("Closing diagnostics file - please wait ...");
// diagFile->Write();
diagFile->Close();
virtual void WriteHeaderToFile() {};
virtual void AddChannelContainer(TObjArray*, UShort_t, Char_t, UShort_t, UShort_t ) {};
virtual void FinishEvent() {};
-
+ virtual void Terminate(TFile* ) {};
Int_t GetCurrentEvent() {return fCurrentEvent;}
const char* GetStripPath(UShort_t det, Char_t ring, UShort_t sec,
UShort_t str, Bool_t full=kTRUE) const;
+
+
TArrayS fPulseSize;
TArrayS fPulseLength;
TF1 fitFunc("fitFunc","pol1",-10,280);
fitFunc.SetParameters(100,3);
grChannel->Fit("fitFunc","Q0+","",0,fHighPulse);
- AliFMDParameters* pars = AliFMDParameters::Instance();
- UInt_t ddl, board,chip,channel;
- pars->Detector2Hardware(det,ring,sec,strip,ddl,board,chip,channel);
-
+
Float_t chi2ndf = 0;
if(fitFunc.GetNDF())
chi2ndf = fitFunc.GetChisquare() / fitFunc.GetNDF();
- ddl = ddl + kBaseDDL;
-
- Int_t relStrip = strip%fNumberOfStripsPerChip;
-
- fOutputFile << ddl << ','
- << board << ','
- << chip << ','
- << channel << ','
- << relStrip << ','
+
+ fOutputFile << det << ','
+ << ring << ','
+ << sec << ','
+ << strip << ','
<< fitFunc.GetParameter(1) << ','
<< fitFunc.GetParError(1) << ','
<< chi2ndf <<"\n";
{
AliFMDParameters* pars = AliFMDParameters::Instance();
fOutputFile.write(Form("# %s \n",pars->GetGainShuttleID()),9);
- fOutputFile.write("# Rcu, "
- "Board, "
- "Chip, "
- "Channel, "
+ fOutputFile.write("# Detector, "
+ "Ring, "
+ "Sector, "
"Strip, "
"Gain, "
"Error, "
- "Chi2/NDF \n",59);
+ "Chi2/NDF \n",56);
}
UShort_t sec,
UShort_t strip)
{
+
AliFMDParameters* pars = AliFMDParameters::Instance();
UInt_t ddl, board,chip,ch;
pars->Detector2Hardware(det,ring,sec,strip,ddl,board,chip,ch);
Int_t halfring = GetHalfringIndex(det,ring,board%16);
+ if(GetCurrentEvent()> (fNumberOfStripsPerChip*fEventsPerChannel.At(halfring)))
+ return
if(strip % fNumberOfStripsPerChip) return;
if(((GetCurrentEvent()) % fPulseLength.At(halfring)) && GetCurrentEvent() > 0) return;
channel->SetPointError(fCurrentPulse.At(halfring),0,rms);
if(fSaveHistograms) {
- gDirectory->cd(Form("%s:FMD%d%c/sector_%d/strip_%d",
- fDiagnosticsFilename.Data(),
- det,ring,sec,channelNumber));
- hChannel->Write(Form("hFMD%d%c_%d_%d_pulse_%d",
- det,ring,sec,channelNumber,fCurrentPulse.At(halfring)));
+ gDirectory->cd(GetStripPath(det,ring,sec,channelNumber));
+ hChannel->Write(Form("%s_pulse_%03d",hChannel->GetName(),(Int_t)pulse));
+
}
#include "fstream"
#include "AliLog.h"
#include "TF1.h"
+#include "TObject.h"
//_____________________________________________________________________
ClassImp(AliFMDPedestalDA)
//_____________________________________________________________________
-AliFMDPedestalDA::AliFMDPedestalDA() : AliFMDBaseDA()
+AliFMDPedestalDA::AliFMDPedestalDA() : AliFMDBaseDA(),
+ fCurrentChannel(0),
+ fPedSummary("PedestalSummary","pedestals",51200,0,51200),
+ fNoiseSummary("NoiseSummary","noise",51200,0,51200)
{
fOutputFile.open("peds.csv");
//_____________________________________________________________________
AliFMDPedestalDA::AliFMDPedestalDA(const AliFMDPedestalDA & pedDA) :
- AliFMDBaseDA(pedDA)
+ AliFMDBaseDA(pedDA),
+ fCurrentChannel(0),
+ fPedSummary("PedestalSummary","pedestals",51200,0,51200),
+ fNoiseSummary("NoiseSummary","noise",51200,0,51200)
{
}
hChannel->Fit("gaus","Q0+","",mean-5*rms,mean+5*rms);
TF1* fitFunc = hChannel->GetFunction("gaus");
- UInt_t ddl, board, chip, channel;
-
- UShort_t relStrip = strip%128;
- AliFMDParameters* pars = AliFMDParameters::Instance();
- pars->Detector2Hardware(det,ring,sec,strip,ddl,board,chip,channel);
-
Float_t chi2ndf = 0;
if(fitFunc->GetNDF())
chi2ndf = fitFunc->GetChisquare() / fitFunc->GetNDF();
- ddl = ddl + kBaseDDL;
-
- fOutputFile << ddl << ','
- << board << ','
- << chip << ','
- << channel << ','
- << relStrip << ','
- << 0 << ','
- << 0 << ','
+ fOutputFile << det << ','
+ << ring << ','
+ << sec << ','
+ << strip << ','
<< mean << ','
<< rms << ','
<< fitFunc->GetParameter(1) << ','
nStr, -.5, nStr-.5);
sumNoise->SetXTitle("Strip");
sumNoise->SetYTitle("Noise [ADC]");
+
sumNoise->SetDirectory(gDirectory);
}
sumPed->SetBinContent(strip+1, mean);
sumPed->SetBinError(strip+1, rms);
sumNoise->SetBinContent(strip+1, rms);
-
+
+ if(sumNoise->GetEntries() == nStr)
+ sumNoise->Write(sumNoise->GetName(),TObject::kOverwrite);
+ if(sumPed->GetEntries() == nStr)
+ sumPed->Write(sumPed->GetName(),TObject::kOverwrite);
+
+ fPedSummary.SetBinContent(fCurrentChannel,mean);
+ fNoiseSummary.SetBinContent(fCurrentChannel,rms);
+ fCurrentChannel++;
+
gDirectory->cd(GetStripPath(det, ring, sec, strip, kTRUE));
- hChannel->GetXaxis()->SetRange(-.5,1023.5);
- // hChannel->SetDirectory(gDirectory);
+ hChannel->GetXaxis()->SetRange(1,1024);
+
hChannel->Write();
}
}
+//_____________________________________________________________________
+void AliFMDPedestalDA::Terminate(TFile* diagFile)
+{
+ diagFile->cd();
+
+ fPedSummary.Write();
+ fNoiseSummary.Write();
+
+}
+
//_____________________________________________________________________
void AliFMDPedestalDA::WriteHeaderToFile()
{
AliFMDParameters* pars = AliFMDParameters::Instance();
fOutputFile.write(Form("# %s \n",pars->GetPedestalShuttleID()),13);
- fOutputFile.write("# Rcu, "
- "Board, "
- "Chip, "
- "Channel, "
+ fOutputFile.write("# Detector, "
+ "Ring, "
+ "Sector, "
"Strip, "
- "Sample, "
- "TimeBin, "
"Pedestal, "
"Noise, "
"Mu, "
"Sigma, "
- "Chi2/NDF \n",91);
+ "Chi2/NDF \n", 71);
}
//_____________________________________________________________________
void Analyse(UShort_t det, Char_t ring, UShort_t sec, UShort_t strip);
void WriteHeaderToFile();
void FinishEvent() {}
+ void Terminate(TFile* );
private:
TH1S* GetChannel(UShort_t det, Char_t ring, UShort_t sec, UShort_t strip);
-
+
+ Int_t fCurrentChannel;
+ TH1F fPedSummary;
+ TH1F fNoiseSummary;
ClassDef(AliFMDPedestalDA,0)
-
+
};
#endif