]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
New features, summary plots etc. The DA's now write out calibration parameters in...
authorhdalsgaa <hdalsgaa@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 29 May 2008 19:29:44 +0000 (19:29 +0000)
committerhdalsgaa <hdalsgaa@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 29 May 2008 19:29:44 +0000 (19:29 +0000)
FMD/AliFMDBaseDA.cxx
FMD/AliFMDBaseDA.h
FMD/AliFMDGainDA.cxx
FMD/AliFMDPedestalDA.cxx
FMD/AliFMDPedestalDA.h

index 71e9e0d1af969992a956002725158df90ab43b5f..7fb11a2219e8492f7bf420f573a4d69d6a1bec58 100644 (file)
@@ -196,6 +196,9 @@ void AliFMDBaseDA::Run(AliRawReader* reader)
   }
   
   if(fSaveHistograms ) {
+    
+    Terminate(diagFile);
+  
     AliInfo("Closing diagnostics file - please wait ...");
     // diagFile->Write();
     diagFile->Close();
index ee2b74a3c01a4aa32768a6a1833b2f3d9d80af2f..1b81d1a834ed58c3de3cfd031c8778df8f935d7f 100644 (file)
@@ -55,7 +55,7 @@ protected:
   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;}
   
@@ -83,6 +83,8 @@ protected:
   const char* GetStripPath(UShort_t det, Char_t ring, UShort_t sec, 
                           UShort_t str, Bool_t full=kTRUE) const;
   
+
+  
   TArrayS fPulseSize;
   TArrayS fPulseLength;
 
index 5a13cff07bea2943ecd7d370d1730dd8c64af37f..d92b32f2e588bd45f1765eb26632a40d3182668b 100644 (file)
@@ -177,22 +177,15 @@ void AliFMDGainDA::Analyse(UShort_t det,
   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";
@@ -227,14 +220,13 @@ void AliFMDGainDA::WriteHeaderToFile()
 {
   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);
   
 }
 
@@ -279,10 +271,13 @@ void AliFMDGainDA::UpdatePulseAndADC(UShort_t det,
                                     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;
      
@@ -314,11 +309,9 @@ void AliFMDGainDA::UpdatePulseAndADC(UShort_t det,
   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));
+    
   }
   
   
index ccc15b8e069d2a17b37d8ce2a8dc20e923e866e7..9ae10b7a3b3b729541dbd28c4851e12f98fa17a0 100644 (file)
 #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");
   
@@ -45,7 +49,10 @@ AliFMDPedestalDA::AliFMDPedestalDA() : AliFMDBaseDA()
 
 //_____________________________________________________________________
 AliFMDPedestalDA::AliFMDPedestalDA(const AliFMDPedestalDA & pedDA) : 
-  AliFMDBaseDA(pedDA)
+  AliFMDBaseDA(pedDA),
+  fCurrentChannel(0),
+  fPedSummary("PedestalSummary","pedestals",51200,0,51200),
+  fNoiseSummary("NoiseSummary","noise",51200,0,51200)
 {
   
 }
@@ -142,25 +149,14 @@ void AliFMDPedestalDA::Analyse(UShort_t det,
   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)    << ','
@@ -188,36 +184,53 @@ void AliFMDPedestalDA::Analyse(UShort_t det,
                          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);
 }
 
 //_____________________________________________________________________
index a3a13d4e46f3da4537937cfb527a61ae9dc46860..7b687cefb8d3da4d1d2d7848e2bcbf479894f263 100644 (file)
@@ -32,10 +32,14 @@ class AliFMDPedestalDA: public AliFMDBaseDA {
   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