]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
Histograms are updated in 3 different views unde a separate tab menu.
authorphille <phille@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 20 Feb 2007 19:30:17 +0000 (19:30 +0000)
committerphille <phille@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 20 Feb 2007 19:30:17 +0000 (19:30 +0000)
The program now takes up to 10 different hosts specified at the
command line. The port needs not anymore to be spcified. If not
given on the command line after the -host <hostname> they are set to a default value
of 42001. Data from several hosts/ports are updated in a single display.
For the moment different modules might not be syncronized on the display
due to samll bug. Expect fix soon.

HLT/PHOS/OnlineDisplay/AliHLTPHOSGetEventButton.cxx
HLT/PHOS/OnlineDisplay/AliHLTPHOSOnlineDisplay.cxx
HLT/PHOS/OnlineDisplay/AliHLTPHOSOnlineDisplay.h
HLT/PHOS/OnlineDisplay/Makefile
HLT/PHOS/OnlineDisplay/main.cxx

index 403d3ee28cd97a7d9fb156a46217fa44fea487b3..147652d79ee4c21f82fa5d7510af0c49a13b12b5 100755 (executable)
@@ -53,6 +53,7 @@ AliHLTPHOSGetEventButton::HandleButton(Event_t* event)
 {
   if(event->fType == kButtonPress) 
     {
+      //      onlineDisplayPtr->GetNextEvent2();
       onlineDisplayPtr->GetNextEvent();
     }
 }
index 3b73e949c422abb23f9d8db4810a75767dfddfc2..38a8674a10077f4e8c75c534953d16f15477f048 100644 (file)
@@ -43,6 +43,7 @@
 AliHLTPHOSGetEventButton*  AliHLTPHOSOnlineDisplay::fgEventButtPtr     = 0;           /**<Button to get a new event from the HLT online stream*/
 AliHLTPHOSOnlineDisplay*   AliHLTPHOSOnlineDisplay::fgInstancePtr      = 0;           /**<The one an only instance of PhosOnlineDisplay*/
 HOMERReader*               AliHLTPHOSOnlineDisplay::fgHomerReaderPtr   = 0;           /**<Homer reader that fetches events from the HLT online stream*/
+HOMERReader*               AliHLTPHOSOnlineDisplay::fgHomerReadersPtr[MAX_HOSTS];
 TH2S*                      AliHLTPHOSOnlineDisplay::legoPlotLGPtr      = 0;           /**<2D histogram for low gain channels*/
 TH2S*                      AliHLTPHOSOnlineDisplay::legoPlotHGPtr      = 0;           /**<2D histogram for high gain channels*/
 char*                      AliHLTPHOSOnlineDisplay::fgDefaultDet       = "SOHP";      /**<PHOS written backwards*/
@@ -51,42 +52,85 @@ int                        AliHLTPHOSOnlineDisplay::fgEvntCnt          = 0;
 TCanvas*                   AliHLTPHOSOnlineDisplay::fgCanvasHGPtr      = 0;           /**<Canvas to plot legoplot for High gain channels*/ 
 TCanvas*                   AliHLTPHOSOnlineDisplay::fgCanvasLGPtr      = 0;           /**<Canvas to plot legoplot for Low gain channels*/ 
 Bool_t                     AliHLTPHOSOnlineDisplay::fgAccumulate       = kTRUE ;     /**<If set to kFALSE reset legoplot between event, kTRUE adds current energies to previous plot*/
-Bool_t                     AliHLTPHOSOnlineDisplay::test[17920][2];
+char*                      AliHLTPHOSOnlineDisplay::host               = 0;
+int                        AliHLTPHOSOnlineDisplay::port               = 0;
+unsigned int                        AliHLTPHOSOnlineDisplay::fgNHosts           = 0;
+unsigned int                        AliHLTPHOSOnlineDisplay::fgNPorts           = 0;
+char*                      AliHLTPHOSOnlineDisplay::fgHosts[MAX_HOSTS];
+short unsigned int*                        AliHLTPHOSOnlineDisplay::fgPorts             =0; 
+
 TGCompositeFrame*          AliHLTPHOSOnlineDisplay::fFrame1            = 0; 
 TGCompositeFrame*          AliHLTPHOSOnlineDisplay::fF1                = 0;         
 TGCompositeFrame*          AliHLTPHOSOnlineDisplay::fF2                = 0;
 TGCompositeFrame*          AliHLTPHOSOnlineDisplay::fF3                = 0;
 TGCompositeFrame*          AliHLTPHOSOnlineDisplay::fF4                = 0;
 TGCompositeFrame*          AliHLTPHOSOnlineDisplay::fF5                = 0;
+TGCompositeFrame*          AliHLTPHOSOnlineDisplay::fSubF1             = 0;
+TGCompositeFrame*          AliHLTPHOSOnlineDisplay::fSubF2             = 0;
+TGCompositeFrame*          AliHLTPHOSOnlineDisplay::fSubF3             = 0;
 TGTab*                     AliHLTPHOSOnlineDisplay::fTab               = 0;
+TGTab*                     AliHLTPHOSOnlineDisplay::fSubTab            = 0;
 TRootEmbeddedCanvas*       AliHLTPHOSOnlineDisplay::fEc1               = 0; 
 TRootEmbeddedCanvas*       AliHLTPHOSOnlineDisplay::fEc2               = 0; 
+TRootEmbeddedCanvas*       AliHLTPHOSOnlineDisplay::fEc3               = 0; 
+TRootEmbeddedCanvas*       AliHLTPHOSOnlineDisplay::fEc4               = 0;
+TRootEmbeddedCanvas*       AliHLTPHOSOnlineDisplay::fEc5               = 0; 
+TRootEmbeddedCanvas*       AliHLTPHOSOnlineDisplay::fEc6               = 0;
 using namespace std;
 
 
 AliHLTPHOSOnlineDisplay*
-AliHLTPHOSOnlineDisplay::Instance(char *hostname, int port
+AliHLTPHOSOnlineDisplay::Instance() 
 {
-  if (!fgInstancePtr) fgInstancePtr = new AliHLTPHOSOnlineDisplay(hostname, port);
+  if (!fgInstancePtr) fgInstancePtr = new AliHLTPHOSOnlineDisplay(host, port);
   return fgInstancePtr;
 }
 
 
 AliHLTPHOSOnlineDisplay::AliHLTPHOSOnlineDisplay()
 {
-  cout << "ERROR: You canot create Onlinedisplay without parameters" << endl;
-  cout << "Usage: AliHLTPHOSOnlineDisplay(char *hostname, int port)" << endl;
+  //  if (!fgInstancePtr) fgInstancePtr = new AliHLTPHOSOnlineDisplay(host, port);
+  //  return fgInstancePtr;
+  //  cout << "ERROR: You canot create Onlinedisplay without parameters" << endl;
+  //  cout << "Usage: AliHLTPHOSOnlineDisplay(char *hostname, int port)" << endl;
 }
 
 AliHLTPHOSOnlineDisplay::AliHLTPHOSOnlineDisplay(char *hostname, int port)
 {
+  char **tmp;
   cout << "creating new PHOS Onlinedisplay" << endl;
   legoPlotLGPtr  = 0;
   legoPlotHGPtr  = 0;
-  fgHomerReaderPtr = new  HOMERReader(hostname, port);
-  InitDisplay();
+  
+  //fgHomerReaderPtr = new  HOMERReader(hostname, port);
+
+  fgHomerReaderPtr = new  HOMERReader(fgNHosts, (const char**)fgHosts,  fgPorts);
+
+
+
+  //    fgHomerReaderPtr = new  HOMERReader(fgNHosts, fgHosts,  fgPorts);
+  for(int i = 0; i <fgNHosts; i++)
+    {
+      fgHomerReadersPtr[i] =  new  HOMERReader(fgHosts[i], fgPorts[i]); 
+    }
+
+ InitDisplay();
   int ret = 0;
   Bool_t nextSwitch=kTRUE;
+  cout << "The number of ports is" << fgNPorts  << endl;
+ cout << "The number of HOSTS is" << fgNHosts  << endl;
+ for(int i = 0; i< fgNPorts; i++)
+   {
+     cout << "Port[" << i <<"] = " << fgPorts[i] << endl;  
+   }
+
+  for(int i = 0; i< fgNHosts; i++)
+   {
+     cout << "Host[" << i <<"] = " << fgHosts[i] << endl;  
+   }
+
 }
 
 
@@ -99,34 +143,61 @@ void
 AliHLTPHOSOnlineDisplay::InitDisplay()
 {
   gStyle->SetPalette(1);
-
   fTab = new TGTab(this, 100, 100);
-  TGCompositeFrame *tf = fTab->AddTab("Tab 1");
-  fF1 = new TGCompositeFrame(tf, 60, 20, kVerticalFrame);
   TGLayoutHints *fL1 = new TGLayoutHints(kLHintsBottom | kLHintsExpandX |
                                         kLHintsExpandY, 2, 2, 15, 1);
-  fEc1 = new TRootEmbeddedCanvas("ec1", fF1, 100, 100);
-  fgCanvasHGPtr = fEc1->GetCanvas();
-  fF1->AddFrame(fEc1, fL1);
-  fEc2 = new TRootEmbeddedCanvas("ec2", fF1, 100, 100);
-  fgCanvasLGPtr = fEc2->GetCanvas();
-  fF1->AddFrame(fEc2, fL1);
-  tf->AddFrame(fF1, fL1);
+
+
+   TGCompositeFrame *tf = fTab->AddTab("Event display");
+           fSubTab = new TGTab(tf, 100, 100);
+           TGCompositeFrame *tf2 = fSubTab->AddTab("LEGO");  
+
+          fSubF1 = new TGCompositeFrame(tf2, 60, 20, kVerticalFrame);
+          fEc1 = new TRootEmbeddedCanvas("ec1", fSubF1, 100, 100);
+          fSubF1->AddFrame(fEc1, fL1);
+
+          fEc2 = new TRootEmbeddedCanvas("ec1", fSubF1, 100, 100);
+          fgCanvasHGPtr = fEc2->GetCanvas();
+          fSubF1->AddFrame(fEc2, fL1);
+          tf2->AddFrame(fSubF1, fL1);
+
+          tf2 = fSubTab->AddTab("SCAT"); 
+          fSubF2 = new TGCompositeFrame(tf2, 60, 20, kVerticalFrame);
+          tf2->AddFrame(fSubF2, fL1);
+          fEc3 = new TRootEmbeddedCanvas("ec1", fSubF2, 100, 100);
+          fSubF2->AddFrame(fEc3, fL1);
+          fEc4 = new TRootEmbeddedCanvas("ec1", fSubF2, 100, 100);
+          fSubF2->AddFrame(fEc4, fL1);
+
+
+          tf2 = fSubTab->AddTab("SURF"); 
+          fSubF3 = new TGCompositeFrame(tf2, 60, 20, kVerticalFrame);
+          tf2->AddFrame(fSubF3, fL1);
+          fEc5 = new TRootEmbeddedCanvas("ec1", fSubF3, 100, 100);
+          fSubF3->AddFrame(fEc5, fL1);
+          fEc6 = new TRootEmbeddedCanvas("ec1", fSubF3, 100, 100);
+          fSubF3->AddFrame(fEc6, fL1);
+          fSubTab->Resize();
+          tf->AddFrame(fSubTab, fL1);
 
   tf = fTab->AddTab("Tab 2");
+  fF1 = new TGCompositeFrame(tf, 60, 20, kVerticalFrame);
+
+  tf = fTab->AddTab("Tab 3");
   fF2 = new TGCompositeFrame(tf, 60, 20, kVerticalFrame);
   tf->AddFrame(fF2, fL1);
 
-  tf = fTab->AddTab("Tab 3");
-  fF3 = new TGCompositeFrame(tf, 60, 20, kVerticalFrame);
-  tf->AddFrame(fF3, fL1);
 
   tf = fTab->AddTab("Tab 4");
   fF4 = new TGCompositeFrame(tf, 60, 20, kVerticalFrame);
   tf->AddFrame(fF4, fL1);
+  //  tf->AddFrame(tf2, fL1);
 
   AddFrame(fTab, fL1);
-  fgEventButtPtr = new  AliHLTPHOSGetEventButton(fF1, "get event");
+
+  //fgEventButtPtr = new  AliHLTPHOSGetEventButton(fF1, "get event");
+  fgEventButtPtr = new  AliHLTPHOSGetEventButton(fSubF1, "get event");
+
   MapSubwindows();
   Resize();
   SetWindowName("online display");
@@ -135,6 +206,107 @@ AliHLTPHOSOnlineDisplay::InitDisplay()
 }
 
 
+int
+AliHLTPHOSOnlineDisplay::ScanArguments(int argc, char** argv)
+{
+  for(int i=0; i< MAX_HOSTS; i++)
+    {
+      fgHosts[i] = new char[256];
+    }
+
+  fgPorts = new short unsigned[100];
+
+  Bool_t hostIsSet = kFALSE;
+  Bool_t portIsSet = kFALSE;
+  int iResult=0;
+  TString argument="";
+  //  int hostCnt = 0; 
+  int bMissingParam=0;
+  printf("Main: the number of argumnets is %d \n", argc);
+  for (int i=0; i<argc && iResult>=0; i++) 
+    {
+      argument=argv[i];
+      if (argument.IsNull()) 
+       {
+         continue;
+       }
+
+      if (argument.CompareTo("-host")==0) 
+       {
+         if(i+1 <= argc)
+           {
+             i++;
+             host = argv[i];
+             cout << "sprintf " <<host <<endl;
+             sprintf(fgHosts[fgNHosts],"%s", argv[i]);
+             cout << "finnished sprintf " <<host <<endl; 
+             fgNHosts ++; 
+             hostIsSet = kTRUE; 
+             if(i+1 <= argc)
+               {
+                 argument=argv[i+1];
+                 if(argument.CompareTo("-port")==0)
+                 {
+                   i++;
+                   if(i+1 <= argc)
+                     {
+                       i++;
+                       fgPorts[fgNPorts] = atoi(argv[i]);      
+                       cout << "A setting port to   " << fgPorts[fgNPorts]  <<endl; 
+                       fgNPorts ++;
+                       portIsSet = kTRUE;
+                     }
+                 }
+                 
+                 else
+                   {
+
+                       fgPorts[fgNPorts] =  DEFAULT_PORT;      
+                       cout << "B setting port to   " << fgPorts[fgNPorts]  <<endl; 
+                     fgNPorts ++;
+                     portIsSet = kTRUE;
+                   }
+                 
+                 
+               }
+             
+           }
+
+       }
+    }
+
+
+
+  if(hostIsSet != kTRUE ||  portIsSet != kTRUE)
+    {
+      if(hostIsSet == kFALSE)
+       {
+         printf("\nERROR: no hostname is specified\n");
+       }
+      
+      if( portIsSet == kFALSE)
+       {
+         printf("ERROR: no port spcified\n");
+       }
+      printf("\nYou must specify hostname & port as command line arguments\n\n");
+      printf("*****************************************************************\n");
+      printf("\nUsage: ./onlinedisplay  -hostname  <hostname>   -port  <port>\n\n");
+      printf("*****************************************************************\n\n\n");
+      iResult = -1;
+     
+    }
+  
+  else
+    {
+      iResult = 0;
+    }
+
+  return iResult;
+}
+
+
 int
 AliHLTPHOSOnlineDisplay::GetNextEvent()
 {
@@ -142,9 +314,11 @@ AliHLTPHOSOnlineDisplay::GetNextEvent()
 
   if(fgEvntCnt == 0)
     {
-      legoPlotHGPtr   = new TH2S("Homer","HLT:HOMER: #pi^{0} 5 - 30Gev, High gain",  N_COLUMNS_MOD* N_MODULES , 0,  N_COLUMNS_MOD* N_MODULES ,  N_ROWS_MOD, 0,  N_ROWS_MOD);
+      legoPlotHGPtr   = new TH2S("Homer","HLT:HOMER: #pi^{0} 5 - 30Gev, High gain",  N_COLUMNS_MOD* N_MODULES , 0, 
+                                N_COLUMNS_MOD* N_MODULES ,  N_ROWS_MOD, 0,  N_ROWS_MOD);
       legoPlotHGPtr->SetMaximum( MAX_BIN_VALUE);
-      legoPlotLGPtr   = new TH2S("Homer","HLT:HOMER: #pi^{0} 5 - 30Gev, Low gain",  N_COLUMNS_MOD* N_MODULES , 0,  N_COLUMNS_MOD* N_MODULES ,  N_ROWS_MOD, 0,  N_ROWS_MOD);
+      legoPlotLGPtr   = new TH2S("Homer","HLT:HOMER: #pi^{0} 5 - 30Gev, Low gain",  N_COLUMNS_MOD* N_MODULES , 0,  
+                                N_COLUMNS_MOD* N_MODULES ,  N_ROWS_MOD, 0,  N_ROWS_MOD);
       legoPlotLGPtr->SetMaximum( MAX_BIN_VALUE);
     }  
 
@@ -168,16 +342,135 @@ AliHLTPHOSOnlineDisplay::GetNextEvent()
   unsigned long ndx;
   const AliHLTComponentBlockData* iter = NULL;   
   Bool_t nextSwitch=kTRUE; 
-  //  cout << "homerreader connectionstatus =" <<fgHomerReaderPtr->GetConnectionStatus() << endl;;
+  
+  cout << "homerreader connectionstatus  =" <<fgHomerReaderPtr->GetConnectionStatus() << endl;;
 
-  ret =fgHomerReaderPtr->ReadNextEvent();  
+  for(int reader = 0; reader <  fgNHosts; reader ++)
+    {
+      ret =fgHomerReadersPtr[reader]->ReadNextEvent();  
+     
+      cout << "Event ID for reader " << reader <<" = "<< fgHomerReadersPtr[reader]->GetEventID() << endl;;
+  
+      if( ret ) 
+       {
+         int ndx = fgHomerReaderPtr->GetErrorConnectionNdx();
+         printf( "------------ TRY AGAIN --------------->Error reading event from source %d: %s (%d)\n", ndx, strerror(ret), ret );
+         cout << "HOMER getconncetioNdx  status = " << ndx << endl;
+         return ret; 
+       }
+  
+      
+      unsigned long blockCnt = fgHomerReadersPtr[reader]->GetBlockCnt();
+
+      for ( unsigned long i = 0; i < blockCnt; i++ ) 
+       {
+         char tmp1[9], tmp2[5];
+         memset( tmp1, 0, 9 );
+         memset( tmp2, 0, 5);
+         void *tmp11 = tmp1;
+         ULong64_t* tmp12 = (ULong64_t*)tmp11;
+         *tmp12 =fgHomerReadersPtr[reader]->GetBlockDataType( i );
+         void *tmp21 = tmp2;
+         ULong_t* tmp22 = (ULong_t*)tmp21;
+         *tmp22 =fgHomerReadersPtr[reader]->GetBlockDataOrigin( i );
+       }
+      unsigned long blk = fgHomerReadersPtr[reader]->FindBlockNdx( fgDefaultDataType, fgDefaultDet, 0xFFFFFFFF );    
+
+  
+      while ( blk != ~(unsigned long)0 ) 
+       {
+         AliHLTUInt16_t moduleID;
+         const AliHLTPHOSRcuCellEnergyDataStruct* cellEnergiesPtr = (const AliHLTPHOSRcuCellEnergyDataStruct*)fgHomerReadersPtr[reader]->GetBlockData( blk );  
+         moduleID = cellEnergiesPtr->fModuleID ;
+         int tmpCount = cellEnergiesPtr->fCnt;
+         int tmpRow;
+         int tmpCol;
+         int tmpGain;
+         Int_t tmpBin;
+         
+         for(int i= 0; i<tmpCount; i++)
+           {
+             tmpRow = cellEnergiesPtr->fValidData[i].fRow;
+             tmpCol = cellEnergiesPtr->fValidData[i].fCol;
+             tmpGain =  cellEnergiesPtr->fValidData[i].fGain;
+
+             if(tmpGain == HIGH_GAIN)
+               {
+                 legoPlotHGPtr->Fill(moduleID*N_COLUMNS_MOD + tmpCol +  N_COLUMNS_RCU*cellEnergiesPtr->fRcuZ,  tmpRow + N_ROWS_RCU*cellEnergiesPtr->fRcuX, cellEnergiesPtr->fValidData[i].fEnergy);
+               }
+             
+             else if(tmpGain == LOW_GAIN)
+               {
+                 legoPlotLGPtr->Fill(moduleID*N_COLUMNS_MOD + tmpCol +  N_COLUMNS_RCU*cellEnergiesPtr->fRcuZ, tmpRow + N_ROWS_RCU*cellEnergiesPtr->fRcuX,    cellEnergiesPtr->fValidData[i].fEnergy);
+               }
+
+           }
+
+         blk = fgHomerReadersPtr[reader]->FindBlockNdx( fgDefaultDataType, fgDefaultDet, 0xFFFFFFFF, blk+1);  
       
+         whileCnt ++;
+
+       }
+    }
+
+  UpdateDisplay();
+
+  fgEvntCnt ++;
+}
+
+int
+AliHLTPHOSOnlineDisplay::GetNextEvent2()
+{
+  int whileCnt = 0;
+
+  if(fgEvntCnt == 0)
+    {
+      legoPlotHGPtr   = new TH2S("Homer","HLT:HOMER: #pi^{0} 5 - 30Gev, High gain",  N_COLUMNS_MOD* N_MODULES , 0, 
+                                N_COLUMNS_MOD* N_MODULES ,  N_ROWS_MOD, 0,  N_ROWS_MOD);
+      legoPlotHGPtr->SetMaximum( MAX_BIN_VALUE);
+      legoPlotLGPtr   = new TH2S("Homer","HLT:HOMER: #pi^{0} 5 - 30Gev, Low gain",  N_COLUMNS_MOD* N_MODULES , 0,  
+                                N_COLUMNS_MOD* N_MODULES ,  N_ROWS_MOD, 0,  N_ROWS_MOD);
+      legoPlotLGPtr->SetMaximum( MAX_BIN_VALUE);
+    }  
+
+
+  if(fgAccumulate == kFALSE)
+    {
+      cout <<"restting legoplot" << endl;
+      if(legoPlotHGPtr !=0)
+       {
+         legoPlotHGPtr->Reset(); 
+       }
+
+      if(legoPlotLGPtr !=0)
+       {
+         legoPlotLGPtr->Reset();
+       }  
+    }
+
+
+  int ret = 0;
+  unsigned long ndx;
+  const AliHLTComponentBlockData* iter = NULL;   
+  Bool_t nextSwitch=kTRUE; 
+  
+  cout << "homerreader connectionstatus sync=" <<fgHomerReaderPtr->GetConnectionStatus() << endl;;
+
+  //  for(int reader = 0; reader <  fgNHosts; reader ++)
+  //   {
+  ret =fgHomerReaderPtr->ReadNextEvent();  
+     
+  //  cout << "Event ID for reader " << reader <<" = "<< fgHomerReaderPtr->GetEventID() << endl;;
+  
   if( ret ) 
     {
       int ndx = fgHomerReaderPtr->GetErrorConnectionNdx();
       printf( "------------ TRY AGAIN --------------->Error reading event from source %d: %s (%d)\n", ndx, strerror(ret), ret );
+      cout << "HOMER getconncetioNdx status sync= " << ndx << endl;
       return ret; 
-  }
+    }
+  
       
   unsigned long blockCnt = fgHomerReaderPtr->GetBlockCnt();
 
@@ -227,10 +520,12 @@ AliHLTPHOSOnlineDisplay::GetNextEvent()
 
       blk = fgHomerReaderPtr->FindBlockNdx( fgDefaultDataType, fgDefaultDet, 0xFFFFFFFF, blk+1);  
       
-      whileCnt ++;
+      //    whileCnt ++;
 
-    }
+      //   }
  
+    }
+
   UpdateDisplay();
 
   fgEvntCnt ++;
@@ -240,17 +535,31 @@ AliHLTPHOSOnlineDisplay::GetNextEvent()
 void
 AliHLTPHOSOnlineDisplay::UpdateDisplay()
 {
+  fgCanvasHGPtr =  fEc1->GetCanvas();
   fgCanvasHGPtr->cd();
-  //  fEc1->cd();
-  legoPlotHGPtr->Draw("LEGO2");
-  //  legoPlotHGPtr->Draw("COLZ");
-  legoPlotHGPtr->SetMarkerColor(4);
+  legoPlotHGPtr->Draw("LEGO2Z");
   fgCanvasHGPtr->Update();
+  fgCanvasLGPtr = fEc2->GetCanvas();
   fgCanvasLGPtr->cd();
-  legoPlotLGPtr->Draw("LEGO2");
+  legoPlotLGPtr->Draw("LEGO2Z");
+  fgCanvasLGPtr->Update();
 
-  //  legoPlotLGPtr->Draw("COLZ");
+  fgCanvasHGPtr =  fEc3->GetCanvas();
+  fgCanvasHGPtr->cd();
+  legoPlotHGPtr->Draw("SCAT");
+  fgCanvasHGPtr->Update();
+  fgCanvasLGPtr = fEc4->GetCanvas();
+  fgCanvasLGPtr->cd();
+  legoPlotLGPtr->Draw("SCAT");
   fgCanvasLGPtr->Update();
 
+  fgCanvasHGPtr =  fEc5->GetCanvas();
+  fgCanvasHGPtr->cd();
+  legoPlotHGPtr->Draw("CONTZ");
+  fgCanvasHGPtr->Update();
+  fgCanvasLGPtr = fEc6->GetCanvas();
+  fgCanvasLGPtr->cd();
+  legoPlotLGPtr->Draw("CONTZ");
+  fgCanvasLGPtr->Update();
 }
 
index f9d14cc5c2b98e5deba48f677eb8b0936d230939..f498a5bfd01cbc789813ddfd87b2c3f97f030e0e 100644 (file)
 #include <TRootEmbeddedCanvas.h>
 #include "TGFrame.h"
 
+#define MAX_HOSTS 10
+#define MAX_HOSTNAME_LENGTH 64
+#define DEFAULT_PORT 42001 
+//#define MAX_PORTS_PER_HOST
+
 class TCanvas;
 class AliHLTPHOSRcuCellEnergyDataStruct;
 
@@ -26,13 +31,16 @@ class AliHLTPHOSOnlineDisplay : public  TGMainFrame
   ~AliHLTPHOSOnlineDisplay();
   //  static int GetNextEvent();
   int GetNextEvent();
+  int GetNextEvent2();
   void InitDisplay();
   void UpdateDisplay();
-  static AliHLTPHOSOnlineDisplay* Instance(char *hostname, int port);  
-
+  static int ScanArguments(int argc, char** argv);
+  //  static AliHLTPHOSOnlineDisplay* Instance(char *hostname, int port);  
+  static AliHLTPHOSOnlineDisplay* Instance();  
  private:
-  static TGCompositeFrame    *fFrame1, *fF1, *fF2, *fF3, *fF4, *fF5;
+  static TGCompositeFrame    *fFrame1, *fF1, *fF2, *fF3, *fF4, *fF5, *fSubF1, *fSubF2, *fSubF3;
   static TGTab               *fTab;
+  static TGTab               *fSubTab;
   static TRootEmbeddedCanvas *fEc1, *fEc2, *fEc3, *fEc4, *fEc5, *fEc6;
   static AliHLTPHOSGetEventButton* fgEventButtPtr; 
   static AliHLTPHOSOnlineDisplay* fgInstancePtr;
@@ -44,8 +52,24 @@ class AliHLTPHOSOnlineDisplay : public  TGMainFrame
   static int fgEvntCnt;
   static TCanvas *fgCanvasHGPtr;
   static TCanvas *fgCanvasLGPtr;
+
+  static  char *host;
+  //  char *port;
+  static int port;
+
+  static unsigned int fgNHosts;
+  static unsigned int fgNPorts;
+  //  static const char  **fgHosts;
+
+  static HOMERReader* fgHomerReadersPtr[MAX_HOSTS];
+
+  static char  *fgHosts[MAX_HOSTS];
+  //  static char  **fgHosts;
+ // static short unsigned    fgPorts[MAX_HOSTS];
+  static short unsigned    *fgPorts;
+
   static Bool_t fgAccumulate;
-  static Bool_t test[17920][2];
+  //  static Bool_t test[17920][2];
 };
 
 
index 55454e2e2f537d1a17332411f766180aa3c12bf5..44086600895b4340bcf41f8357f92814590b8a74 100755 (executable)
@@ -39,16 +39,16 @@ OBJS        = $(MAINO)  $(ALIHLTPHOSONLINEDISPLAYO) $(GETEVENTBUTTONO)
 
 
 pftest:$(OBJS)
-       g++ $(ROOTLIBS) $(ALIROOTLIBS) $(HLTLIBS)  $(OBJS) -o onlinedisplay
+       g++ -g $(ROOTLIBS) $(ALIROOTLIBS) $(HLTLIBS)  $(OBJS) -o onlinedisplay
 
 $(MAINO):$(MAINS)
-       g++ -I$(ROOTSYS)/include -I$(HOMERINCLUDE) -c $(MAINS)
+       g++ -g -I$(ROOTSYS)/include -I$(HOMERINCLUDE) -c $(MAINS)
 
 $(ALIHLTPHOSONLINEDISPLAYO):$(ALIHLTPHOSONLINEDISPLAYS) $(ALIHLTPHOSONLINEDISPLAYH)
-       g++ -I$(ROOTSYS)/include -I$(ALIHLTPHOSINCLUDE) -I$(HOMERINCLUDE) -I$(ALIHLTINCLUDE) -c $(ALIHLTPHOSONLINEDISPLAYS)
+       g++ -g -I$(ROOTSYS)/include -I$(ALIHLTPHOSINCLUDE) -I$(HOMERINCLUDE) -I$(ALIHLTINCLUDE) -c $(ALIHLTPHOSONLINEDISPLAYS)
 
 $(GETEVENTBUTTONO):$(GETEVENTBUTTONS) $(GETEVENTBUTTONH)
-       g++ -I$(ROOTSYS)/include -I$(ALIHLTPHOSINCLUDE) -I$(HOMERINCLUDE) -I$(ALIHLTINCLUDE) -c $(GETEVENTBUTTONS)
+       g++ -g -I$(ROOTSYS)/include -I$(ALIHLTPHOSINCLUDE) -I$(HOMERINCLUDE) -I$(ALIHLTINCLUDE) -c $(GETEVENTBUTTONS)
 
 clean:
        @rm -f *o *~ *# pftest
index 83630cc11f9ebea0cf1cd52008a376d28e762ecf..33d569a92b17f8fed92d81ce798e7a341bc0948e 100644 (file)
@@ -16,7 +16,6 @@
  * provided "as is" without express or implied warranty.                  *
  **************************************************************************/
 
-
 #include "AliHLTPHOSOnlineDisplay.h"
 #ifndef __CINT__
 # include <stdexcept>
 #endif
 
 
-
-
 int
 main(int argc, char** argv) 
 {
-  Bool_t hostnameIsSet = kFALSE;
-  Bool_t portIsSet = kFALSE;
-
-  int iResult=0;
-  TString argument="";
-  //  TString    hostname;  
-  char *hostname;
-  //  char *port;
-  int port;
-
-  int bMissingParam=0;
-  printf("Main: the number of argumnets is %d \n", argc);
-  for (int i=0; i<argc && iResult>=0; i++) 
-    {
-      argument=argv[i];
-      if (argument.IsNull()) 
-       {
-         continue;
-       }
-
-      if (argument.CompareTo("-hostname")==0) 
-       {
-         if ((bMissingParam=(++i>=argc))) 
-           {
-             break;
-           }
-         hostname = argv[i];
-         hostnameIsSet = kTRUE;
-         printf("\nsetting host to: %s \n", hostname);
-       } 
-         
-      if (argument.CompareTo("-port")==0) 
-       {
-         if ((bMissingParam=(++i>=argc))) 
-           {
-             break;
-           }
-         port = atoi(argv[i]);
-         portIsSet = kTRUE;
-         printf("\nsetting port to: %d \n", port);
-       }
-   }
-
-  if(hostnameIsSet != kTRUE ||  portIsSet != kTRUE)
-    {
-      if(hostnameIsSet == kFALSE)
-       {
-         printf("\nERROR: no hostname is specified\n");
-       }
-      
-      if( portIsSet == kFALSE)
-       {
-         printf("ERROR: no port spcified\n");
-       }
-      printf("\nYou must specify hostname & port as command line arguments\n\n");
-      printf("*****************************************************************\n");
-      printf("\nUsage: ./onlinedisplay  -hostname  <hostname>   -port  <port>\n\n");
-      printf("*****************************************************************\n\n\n");
-    }
-  else
-    {
 
-
-      try {
+  //  AliHLTPHOSOnlineDisplay* onlineDisplay = new AliHLTPHOSOnlineDisplay("alice3", 42001); 
+  
+  if(!AliHLTPHOSOnlineDisplay::ScanArguments(argc, argv))
+  {
+    
+    try 
+      {
        TApplication app("app", 0, 0);
-       AliHLTPHOSOnlineDisplay* phosDisplayPtr = AliHLTPHOSOnlineDisplay::Instance(hostname, port);
+       AliHLTPHOSOnlineDisplay* phosDisplayPtr = AliHLTPHOSOnlineDisplay::Instance();
        app.Run();
       }
-  
-      catch (std::exception& e) {
+    
+    catch (std::exception& e)
+      {
        //   std::cerr << e.what() << std::endl;
        return 1;
       }
       return 0;
-      
-    }
-
+  }
+    else
+      {
+       return -1;
+      }
+  
 }