Adding additional documentation (Marian)
authormarian <marian@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 22 Feb 2008 18:20:31 +0000 (18:20 +0000)
committermarian <marian@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 22 Feb 2008 18:20:31 +0000 (18:20 +0000)
TPC/amoreTPC-QA/README
TPC/amoreTPC-QA/src/publisher/PublisherQA.cxx
TPC/amoreTPC-QA/src/ui/UIQA.cxx

index 53155d1..1337820 100644 (file)
@@ -5,13 +5,21 @@ user: tpc
 passwrod: ask responsible
 
 
+
+0. source ~/.balice
+   neccessary if you want to use develpmnet version of 
+   AMORE
+
 1. Check if you have data at given GDC
+   Ask DAQ people which GDC-LDC is enambled for monitoring:
+
 eventDump  :@aldaqpc030
 
 2. Start agent
    From GDC:
  amoreAgent -aTPCQA -s :@aldaqpc030
-   Or From file:
+
+   Or From file 
   amoreAgent -aTPCQA  -s data.raw
 
 3. start amore for TPC
@@ -21,6 +29,19 @@ eventDump  :@aldaqpc030
 
 
 
+Source code:
+
+$ALICE_ROOT/TPC/amoreTPC-QA/
+
+Agent part:
+src/publisher/PublisherQA.cxx  
+(see Amore documentation http://ph-dep-aid.web.cern.ch/ph-dep-aid/amore/)
+      
+GUI part:
+amoreTPC-QA/src/ui/UIQA.cxx
+
+
+
 
 
 
index 3272866..23793ad 100644 (file)
@@ -54,6 +54,11 @@ PublisherQA::~PublisherQA() {
 }
 
 void PublisherQA::BookMonitorObjects() {
+  //
+  //  Called once at the beginning  after invocation of amoreAgent
+  //  all Data which should be accessible to clents has to be published here
+  //
+
  printf("PublisherQA::BookMonitorObject\n");  
  Publish(moInt1, "moInt1", "My Integer MonitorObject 1");
  int cycleLength=0;
index 079d7aa..7288daf 100644 (file)
@@ -55,12 +55,18 @@ UIQA::~UIQA()
 {
 }
 
-void UIQA::Construct() { // The custom GUI is constructed here. gRootFrame is the container of the custom widgets.
+void UIQA::Construct() { 
 
+
+  // The custom GUI is constructed here. gRootFrame is the container of the custom widgets.
+  //
+  // Expert monitor - AliTPCCalibViewerGUI - fViewerGUI
+  //
  fTab=new TGTab(amore::ui::gRootFrame);
  amore::ui::gRootFrame->AddFrame(fTab);
  //
  //
+ //
  TGCompositeFrame* tabCont1 =fTab->AddTab("Expert");
  
  fViewerGUI = new AliTPCCalibViewerGUI(tabCont1, 1000, 600, 0);
@@ -109,8 +115,7 @@ void UIQA::Construct() { // The custom GUI is constructed here. gRootFrame is th
 void UIQA::SubscribeMonitorObjects() { // Before using any MonitorObject, a subscription should be made.
 
   //std::ostringstream stringStream;
- //amore::core::String_t sourceName="CEDA/", subscription; // The agent name acting as a source could be concatenated with all the objects it contains
- //subscription=sourceName+"CE";
+// The agent name acting as a source could be concatenated with all the objects it contains
  //Subscribe(subscription.c_str()); // Here you put a series of subscriptions where the string corresponds to the object name as published in the Publisher Module. As these names are internal to the QA framework, the recommended way of having consistency between AMORE and QA is to factor-out of QA the function that represents the histogram naming convention as a separate AliRoot class/function and use it from inside QA and AMORE.
  //...
   amore::core::String_t sourceName="TPCQA/", subscription; 
@@ -142,8 +147,15 @@ void UIQA::Update() { // This is executed after getting the updated contents of
    printf("Pointertpcqa - %p\n",tpcqa);
    tpcqa->Print();
  }
-
+ //
  if (!tpcqa) return;
+
+ //
+ // Expert monitor part
+ //
+ if (tpcqa) MakeTree(tpcqa);
+ //
+ // Simple histograms
  //
  // Over threshold
  //
@@ -196,17 +208,8 @@ void UIQA::Update() { // This is executed after getting the updated contents of
    canvas->cd(6);
    tpcqa->GetMaxCharge()->MakeHisto2D(1)->Draw("colz");
  }
- if (tpcqa) MakeTree(tpcqa);
 
  // End of access example
-
- //amore::da::AmoreDA amoreDA;
- // hCalibCE->Dump();
- // TObject *temp=0;
- //amoreDA.Receive("CEDA/CE",temp);
- //temp->Dump();
-
-
 }
 
 void UIQA::Process() {
@@ -224,7 +227,13 @@ void UIQA::EndOfCycle() {
 
   void UIQA::MakeTree(AliTPCdataQA* ped){
     //
+    // Prepare tree for expert monitor
+    //
+
+    //
+    // QA part
     //
     AliTPCPreprocessorOnline * preprocesor = new AliTPCPreprocessorOnline;
     if (ped->GetMaxCharge()) preprocesor->AddComponent(new AliTPCCalPad(*(ped->GetMaxCharge())));  
     if (ped->GetMeanCharge()) preprocesor->AddComponent(new AliTPCCalPad(*(ped->GetMeanCharge())));  
@@ -233,29 +242,48 @@ void UIQA::EndOfCycle() {
     if (ped->GetOverThreshold10()) preprocesor->AddComponent(new AliTPCCalPad(*(ped->GetOverThreshold10())));
     if (ped->GetOverThreshold20()) preprocesor->AddComponent(new AliTPCCalPad(*(ped->GetOverThreshold20())));
     if (ped->GetOverThreshold30()) preprocesor->AddComponent(new AliTPCCalPad(*(ped->GetOverThreshold30())));
+
+    //
+    // DA part
+    //
+
     AliTPCCalPad * noise = GetNoise();
     if (noise)  preprocesor->AddComponent(new AliTPCCalPad(*noise));
     AliTPCCalPad * pedestal = GetPedestal();
     if (pedestal)  preprocesor->AddComponent(new AliTPCCalPad(*pedestal));
+
+    //
+    // Make new tree
+    //
     char fname[10000];
     sprintf(fname,"QAtree%d.root",fCycle);
     preprocesor->DumpToFile(fname);
     fCycle++;
     delete noise;
     delete pedestal;
-    //  /*CalibTree
+
+    //
+    // Update viewer
+    //
+    // 
     AliTPCCalibViewer *viewer = fViewerGUI->GetViewer();
     AliTPCCalibViewer *nviewer = new  AliTPCCalibViewer(fname, "calPads");
-    fViewerGUI->Initialize(nviewer);
-    //*/
+    fViewerGUI->Initialize(nviewer);    
     //
     //
     //
   delete preprocesor;
   }
 
+
   AliTPCCalPad *  UIQA::GetNoise(){
     //
+    // Get noise from DAs 
+    // For the moment only get calibration param form local file 
+    //  file is exepected to be in $AMORE_SITE directory
+    // 
+
+    //
     // GetNoise - if not in AmoreDB than from file
     //
     //amore::da::AmoreDA amoreDA;
@@ -263,6 +291,8 @@ void UIQA::EndOfCycle() {
     //amoreDA.Receive("PEDESTAL/NOISE",temp);
     //temp->Dump();
     // if (temp) return (AliTPCCalPad*) temp;
+    //
+    //
     TDirectory * dir = gDirectory;
     TFile *f = new TFile("$AMORE_SITE/PadNoise.root");
     AliCDBEntry * entry = (AliCDBEntry*)f->Get("AliCDBEntry");