]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
added CheckActiveChannels.C macro used to check active channels as declared in TOF...
authorrpreghen <rpreghen@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 9 Sep 2009 10:20:57 +0000 (10:20 +0000)
committerrpreghen <rpreghen@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 9 Sep 2009 10:20:57 +0000 (10:20 +0000)
TOF/CheckActiveChannels.C [new file with mode: 0644]

diff --git a/TOF/CheckActiveChannels.C b/TOF/CheckActiveChannels.C
new file mode 100644 (file)
index 0000000..ea4c491
--- /dev/null
@@ -0,0 +1,62 @@
+CheckActiveChannels(const Char_t *);
+CheckActiveChannels(Int_t);
+CheckActiveChannelsFromCDBEntry(AliCDBEntry *);
+
+//____________________________________________________________________
+
+CheckActiveChannels(const Char_t *fileName)
+{
+
+  TFile *file = TFile::Open(fileName);
+  AliCDBEntry *cdbe = (AliCDBEntry *)file->Get("AliCDBEntry");
+  CheckActiveChannelsFromCDBEntry(cdbe);
+  
+}
+
+//____________________________________________________________________
+
+CheckActiveChannels(Int_t run)
+{
+
+  TGrid *alien = TGrid::Connect("alien://");
+  if (!alien || !alien->IsConnected()) return;
+  AliCDBManager *cdbm = AliCDBManager::Instance();
+  cdbm->SetDefaultStorage("raw://");
+  cdbm->SetRun(80015);
+  AliCDBEntry *cdbe = cdbm->Get("TOF/Calib/Status");
+  CheckActiveChannelsFromCDBEntry(cdbe);
+
+}
+
+//____________________________________________________________________
+
+CheckActiveChannelsFromCDBEntry(AliCDBEntry *cdbe)
+{
+
+  AliTOFChannelOnlineStatusArray *array = (AliTOFChannelOnlineStatusArray *)cdbe->GetObject();
+  TH1F *hStatus_hw_ok = new TH1F("hStatus_hw_ok", "HW status;index;status ok", array->GetSize(), 0., array->GetSize(););
+  TH1F *hStatus_pulser_ok = new TH1F("hStatus_pulser_ok", "pulser status;index;status ok", array->GetSize(), 0., array->GetSize(););
+  TH1F *hStatus_noise_ok = new TH1F("hStatus_noise_ok", "noise status;index;status ok", array->GetSize(), 0., array->GetSize(););
+  TH1F *hStatus_active = new TH1F("hStatus_active", "active status;index;status ok", array->GetSize(), 0., array->GetSize(););
+  Bool_t hw_ok, pulser_ok, noise_ok;
+  for (Int_t i = 0; i <  array->GetSize(); i++) {
+    hw_ok = array->GetHWStatus(i) & AliTOFChannelOnlineStatusArray::kTOFHWOk;
+    pulser_ok = array->GetPulserStatus(i) & AliTOFChannelOnlineStatusArray::kTOFPulserOk;
+    noise_ok = array->GetNoiseStatus(i) & AliTOFChannelOnlineStatusArray::kTOFNoiseOk;
+    hStatus_hw_ok->SetBinContent(i + 1, hw_ok);
+    hStatus_pulser_ok->SetBinContent(i + 1, pulser_ok);
+    hStatus_noise_ok->SetBinContent(i + 1, noise_ok);
+    hStatus_active->SetBinContent(i + 1, hw_ok && pulser_ok && noise_ok);
+  }
+  printf("%d active channels\n", hStatus_active->Integral());
+
+  TFile *fileout = TFile::Open("ChannelStatus.root", "RECREATE");
+  hStatus_hw_ok->Write();
+  hStatus_pulser_ok->Write();
+  hStatus_noise_ok->Write();
+  hStatus_active->Write();
+  fileout->Close();
+
+}
+
+