include $(top_srcdir)/make.dict
-SUBDIRS = . test EVE OnlineDisplay
+SUBDIRS = . test EVE
$(TPC_MAPPING_INC): $(TPC_MAPPING_NOINST_PGM)
./$<
+++ /dev/null
-// @(#) $Id$
-// Original: AliHLTDisplay.cxx,v 1.26 2005/06/14 10:55:21 cvetan
-
-//*************************************************************************
-// This file is property of and copyright by the ALICE HLT Project *
-// ALICE Experiment at CERN, All rights reserved. *
-// *
-// Primary Authors: Jochen Thaeder <mailto:thaeder@kip.uni-heidelberg.de> *
-// Anders Vestbo *
-// for The ALICE HLT Project. *
-// *
-// Permission to use, copy, modify and distribute this software and its *
-// documentation strictly for non-commercial purposes is hereby granted *
-// without fee, provided that the above copyright notice appears in all *
-// copies and that both the copyright notice and this permission notice *
-// appear in the supporting documentation. The authors make no claims *
-// about the suitability of this software for any purpose. It is *
-// provided "as is" without express or implied warranty. *
-//*************************************************************************/
-
-/** @file AliHLTTPCDisplay.cxx
- @author Jochen Thaeder, Anders Vestbo
- @date
- @brief Display class for the HLT TPC events.
-*/
-
-#define TRACKHELIX 0
-#define TRACKPOLYMARKER 0
-#define BACKWARD 0
-#define FIRSTLASTPOINT 0
-
-#define TRACKCOLOR
-#define USEDCLUSTERCOLOR
-#define UNUSEDCLUSTERCOLOR
-
-#include "AliHLTStdIncludes.h"
-#ifndef HAVE_NOT_TVIEW3D
-#include <TView3D.h>
-#else
-#include <TView.h>
-#endif
-#include <TPolyMarker3D.h>
-#include <TPolyLine3D.h>
-#include <TH2.h>
-#include <TTree.h>
-#include <TNode.h>
-#include <TGeometry.h>
-#include <TShape.h>
-#include <TParticle.h>
-#include <TFile.h>
-#include <THelix.h>
-#include <TStyle.h>
-#include <TGraph.h>
-#include <TMultiGraph.h>
-#include <TAttText.h>
-#include <TAxis.h>
-
-#if TRACKHELIX
-#include <THelix.h>
-#endif
-
-#ifdef use_aliroot
-#include <TClonesArray.h>
-#include <AliRun.h>
-#include <AliSimDigits.h>
-#include <AliTPCParam.h>
-#endif
-
-#include "AliHLTTPCLogging.h"
-#include "AliHLTTPCDisplay.h"
-#include "AliHLTTPCTransform.h"
-#include "AliHLTTPCTrack.h"
-#include "AliHLTTPCTrackArray.h"
-#include "AliHLTTPCSpacePointData.h"
-#include "AliHLTTPCMemHandler.h"
-#include "AliHLTTPCDigitReaderPacked.h"
-
-#if __GNUC__ == 3
-using namespace std;
-#endif
-
-ClassImp(AliHLTTPCDisplay);
-
-AliHLTTPCDisplay::AliHLTTPCDisplay( Char_t * gfile ) :
- fTrackParam(),
- fClusters(),
- fTracks(),
- fNcl(),
- fHistrawcl(NULL),
- fHistraw(NULL),
- fHistpad1(NULL),
- fHistpad2(NULL),
- fHistpad3(NULL),
- fHistallresidualsY(NULL),
- fHistallresidualsZ(NULL),
- fHistcharge(NULL),
- fGraphresidualsY(NULL),
- fGraphresidualsZ(NULL),
- fGraphresidualsYLength(NULL),
- fGraphresidualsZLength(NULL),
- fGeom(NULL),
- fBackColor(1),
- fLineColor(0),
- fKeepView(kFALSE),
- fPad(-1),
- fPadRow(0),
- fSlicePadRow(0),
- fNPads(0),
- fNTimes(0),
- fMinHits(0),
- fPtThreshold(0),
- fSelectTrackSwitch(kFALSE),
- fSelectTrack(-1),
- fSelectTrackSlice(0),
- fSelectCluster(0),
- fMinSlice(0),
- fMaxSlice(25),
- fSlicePair(kFALSE),
- fSliceArray(),
- fDrawGeo(kFALSE),
- fcolorbin(),
- fbinct(),
- fpmarr(),
- fSwitch3DCluster(kFALSE),
- fSwitch3DTracks(kFALSE),
- fSwitch3DPadRow(kFALSE),
- fSwitch3DGeometry(kFALSE)
-{
- // constructor
- InitDisplay(gfile);
-}
-
-// #############################################################################
-void AliHLTTPCDisplay::InitDisplay(Char_t *gfile) {
- //constructor
- memset(fClusters,0,36*6*sizeof(AliHLTTPCSpacePointData*));
- memset(fNcl, 0, 36*6*sizeof(UInt_t));
-
-// ---------------------------------------------------
-// In order to be backward compatible
-// ---------------------------------------------------
-#if BACKWARD
- //fc1 = NULL;
-#endif
-// ---------------------------------------------------
-
- SetSliceArray();
-
- AliHLTTPCTransform::SetBField(0.4);
-
- LoadGeometrie(gfile);
-}
-
-
-// #############################################################################
-AliHLTTPCDisplay::~AliHLTTPCDisplay() {
- //destructor
- if(fTracks) delete fTracks;
- fTracks = NULL;
-}
-
-// #############################################################################
-Bool_t AliHLTTPCDisplay::LoadGeometrie(Char_t *gfile) {
- if (gfile) {
- TFile *file = TFile::Open(gfile);
- if(!file) {
- LOG(AliHLTTPCLog::kError,"AliHLTTPCDisplay::AliHLTTPCDisplay","File Open") <<"Geometry file " << gfile << " does not exist!"<<ENDLOG;
- return kFALSE;
- }
-
- fGeom = (TGeometry*)file->Get("AliceGeom");
-
- file->Close();
- delete file;
- }
- return kTRUE;
-}
-
-// #############################################################################
-// EXECUTER
-// #############################################################################
-void AliHLTTPCDisplay::ExecPadRow(){
- int event = gPad->GetEvent();
- if (event != 11) return;
-
- printf("TEST !!!!!!!!!!!!!!!");
-/* int px = gPad->GetEventX();
- TObject *select = gPad->GetSelected();
- if (!select) return;
- if (select->InheritsFrom("TH1")) {
- TH1 *h = (TH1*)select;
- Float_t xx = gPad->AbsPixeltoX(px);
- Float_t x = gPad->PadtoX(xx);
- Int_t binx = h->GetXaxis()->FindBin(x);
- printf("event=%d, hist:%s, bin=%d, content=%f\n",event,h->GetName(),binx,h->GetBinContent(binx));
- }
-
-*/
-
-}
-
-// #############################################################################
-// SETTER
-// #############################################################################
-void AliHLTTPCDisplay::SetHistPadRowAxis() {
- // Set Axis range of Histogramm, due to variable NPads per padrow
-
- fNPads = AliHLTTPCTransform::GetNPads(fPadRow);
- fHistrawcl->SetAxisRange(0,fNPads);
- fHistraw->SetAxisRange(0,fNPads);
- fHistrawcl->SetAxisRange(0,fNTimes,"Y");
- fHistraw->SetAxisRange(0,fNTimes,"Y");
-}
-
-void AliHLTTPCDisplay::SetSliceArray() {
- Int_t slice=0;
- Int_t minSlice = fMinSlice;
- Int_t maxSlice = fMaxSlice;
- Int_t realslice = 0;
-
- for (slice=0;slice<=35;slice++){
- fSliceArray[slice] = kFALSE;
- }
-
- // Single Slice, or Range
- if (minSlice > maxSlice) maxSlice += 17;
-
- for (slice=minSlice;slice<=maxSlice;slice++){
- realslice = slice % 18;
- fSliceArray[realslice] = kTRUE;
- fSliceArray[realslice+18] = kTRUE;
- }
-
- // Pair of Slices
- if (fSlicePair) {
- minSlice = fMinSlice + 9;
- maxSlice = fMaxSlice + 9;
-
- if (minSlice > maxSlice) maxSlice += 17;
-
- for (slice=minSlice;slice<=maxSlice;slice++){
- realslice = slice % 18;
- fSliceArray[realslice] = kTRUE;
- fSliceArray[realslice+18] = kTRUE;
- }
- }
-}
-
-// #############################################################################
-// SETUP
-// #############################################################################
-void AliHLTTPCDisplay::SetupCluster(Int_t slice, Int_t patch, UInt_t nofClusters, AliHLTTPCSpacePointData* data) {
-
- if (data && slice>=0 && slice<36 && patch>=0 && patch<AliHLTTPCTransform::GetNPatches()) {
- if (fClusters[slice][patch]!=NULL) {
- delete(fClusters[slice][patch]);
- fClusters[slice][patch]=NULL;
- }
- Int_t arraysize=nofClusters*sizeof(AliHLTTPCSpacePointData);
- fClusters[slice][patch] = (AliHLTTPCSpacePointData*)new Byte_t[arraysize];
- if (fClusters[slice][patch]) {
- memcpy(fClusters[slice][patch], data, arraysize);
- fNcl[slice][patch]=nofClusters;
- } else {
- fNcl[slice][patch]=nofClusters;
- LOG(AliHLTTPCLog::kError,"AliHLTTPCDisplay::SetupCluster","memory allocation") << "memory allocation failed "<<ENDLOG;
- }
- } else LOG(AliHLTTPCLog::kError,"AliHLTTPCDisplay::SetupCluster","argument check") << "invalid argument "<<ENDLOG;
-}
-
-// #############################################################################
-void AliHLTTPCDisplay::SetupTracks(AliHLTTPCTrackArray *tracks) {
- fTracks=tracks;
-
- // Set USED cluster
- Int_t ntracks = fTracks->GetNTracks();
-
- for(Int_t j=0; j<ntracks; j++) {
- AliHLTTPCTrack *gtrack = fTracks->GetCheckedTrack(j);
- if(!gtrack) continue;
-
- Int_t nHits = gtrack->GetNHits();
- UInt_t *hitnum = gtrack->GetHitNumbers();
-
- for(Int_t h=0; h<nHits; h++){
-
- UInt_t id=hitnum[h];
- Int_t slice = (id>>25) & 0x7f;
- Int_t patch = (id>>22) & 0x7;
- UInt_t pos = id&0x3fffff;
-
- AliHLTTPCSpacePointData *points = fClusters[slice][patch];
-
- if(!points) {
- LOG(AliHLTTPCLog::kError,"AliHLTTPCDisplay::Draw3D","Clusterarray") <<"No points at slice "<<slice<<" patch "<<patch<<" pos "<<pos<<ENDLOG;
- continue;
- }
-
- if(pos>=fNcl[slice][patch]) {
- LOG(AliHLTTPCLog::kError,"AliHLTTPCDisplay::Draw3D","Clusterarray") <<"Pos is too large: pos "<<pos <<" ncl "<<fNcl[slice][patch]<<ENDLOG;
- continue;
- }
- points[pos].fUsed = kTRUE;
- points[pos].fTrackN = j;
- }
- }
-}
-
-// #############################################################################
-void AliHLTTPCDisplay::SetupHist(){
-
- Int_t maxpads = 150;
- fNTimes = AliHLTTPCTransform::GetNTimeBins();
-
- if ( fHistraw ){
- delete fHistraw;
- fHistraw = NULL;
- }
- if ( fHistrawcl ){
- delete fHistrawcl;
- fHistrawcl = NULL;
- }
-
- if ( fHistpad1 ){
- delete fHistpad1;
- fHistpad1 = NULL;
- }
-
- if ( fHistpad2 ){
- delete fHistpad2;
- fHistpad2 = NULL;
- }
-
- if ( fHistpad3 ){
- delete fHistpad3;
- fHistpad3 = NULL;
- }
-
- if ( fHistallresidualsY){
- delete fHistallresidualsY;
- fHistallresidualsY = NULL;
- }
-
- if ( fHistallresidualsZ){
- delete fHistallresidualsZ;
- fHistallresidualsZ = NULL;
- }
- if ( fHistcharge){
- delete fHistcharge;
- fHistcharge = NULL;
- }
-
- // Setup the histograms
- Int_t padbinning = maxpads*10;
- fHistraw = new TH2F("fHistraw","Selected PadRow with found Clusters;Pad #;Timebin #",maxpads,0,maxpads-1,fNTimes,0,fNTimes-1);
- fHistrawcl = new TH1F("fHistrawcl","",padbinning,0,maxpads-1);
- fHistpad1 = new TH1F ("fHistpad1","Selected Pad -1;Timebin #",fNTimes,0,fNTimes-1);
- fHistpad2 = new TH1F ("fHistpad2","Selected Pad;Timebin #",fNTimes,0,fNTimes-1);
- fHistpad3 = new TH1F ("fHistpad3","Selected Pad +1;Timebin #",fNTimes,0,fNTimes-1);
- fHistallresidualsY = new TH1F ("fHistallresiduals","Y Residuals of all Tracks in selected slices;residuals",5000,-100,100);
- fHistallresidualsZ = new TH1F ("fHistallresiduals","Z Residuals of all Tracks in selected slices;residuals",5000,-100,100);
- fHistcharge = new TH1F ("fHistcharge","Cluster distribution per charge;charge;#cluster",5000,0,30000);
-
- fHistraw->SetOption("COLZ");
-
- fHistallresidualsY->SetTitleSize(0.03);
- fHistallresidualsY->GetXaxis()->SetLabelSize(0.03);
- fHistallresidualsY->GetXaxis()->SetTitleSize(0.03);
- fHistallresidualsY->GetYaxis()->SetLabelSize(0.03);
- fHistallresidualsY->GetYaxis()->SetTitleSize(0.03);
-
- fHistallresidualsZ->SetTitleSize(0.03);
- fHistallresidualsZ->GetXaxis()->SetLabelSize(0.03);
- fHistallresidualsZ->GetXaxis()->SetTitleSize(0.03);
- fHistallresidualsZ->GetYaxis()->SetLabelSize(0.03);
- fHistallresidualsZ->GetYaxis()->SetTitleSize(0.03);
-
- fHistcharge->SetTitleSize(0.03);
- fHistcharge->GetXaxis()->SetLabelSize(0.03);
- fHistcharge->GetXaxis()->SetTitleSize(0.03);
- fHistcharge->GetYaxis()->SetLabelSize(0.03);
- fHistcharge->GetYaxis()->SetTitleSize(0.03);
-
- fHistraw->SetTitleSize(0.03);
- fHistraw->GetXaxis()->SetLabelSize(0.03);
- fHistraw->GetXaxis()->SetTitleSize(0.03);
- fHistraw->GetYaxis()->SetLabelSize(0.03);
- fHistraw->GetYaxis()->SetTitleSize(0.03);
-
- fHistpad1->SetTitleSize(0.03);
- fHistpad1->GetXaxis()->SetLabelSize(0.03);
- fHistpad1->GetXaxis()->SetTitleSize(0.03);
- fHistpad1->GetYaxis()->SetLabelSize(0.03);
- fHistpad1->GetYaxis()->SetTitleSize(0.03);
-
- fHistpad2->SetTitleSize(0.03);
- fHistpad2->GetXaxis()->SetLabelSize(0.03);
- fHistpad2->GetXaxis()->SetTitleSize(0.03);
- fHistpad2->GetYaxis()->SetLabelSize(0.03);
- fHistpad2->GetYaxis()->SetTitleSize(0.03);
-
- fHistpad3->SetTitleSize(0.03);
- fHistpad3->GetXaxis()->SetLabelSize(0.03);
- fHistpad3->GetXaxis()->SetTitleSize(0.03);
- fHistpad3->GetYaxis()->SetLabelSize(0.03);
- fHistpad3->GetYaxis()->SetTitleSize(0.03);
-
- gStyle->SetPalette(1);
-
- SetHistPadRowAxis();
-}
-
-// ####################################################################################################
-void AliHLTTPCDisplay::FillPadRow(Int_t patch, ULong_t dataBlock, ULong_t dataLen){
- AliHLTTPCDigitReader* digitReader = new AliHLTTPCDigitReaderPacked();
- bool readValue = true;
- Int_t rowOffset = 0;
-
- // Initialize RAW DATA
- Int_t firstRow = AliHLTTPCTransform::GetFirstRow(patch);
- Int_t lastRow = AliHLTTPCTransform::GetLastRow(patch);
-
- // Outer sector, patches 2, 3, 4, 5 - start counting in patch 2 with row 0
- if ( patch >= 2 ) rowOffset = AliHLTTPCTransform::GetFirstRow( 2 );
-
- // Initialize block for reading packed data
- void* tmpdataBlock = (void*) dataBlock;
- digitReader->InitBlock(tmpdataBlock,dataLen,firstRow,lastRow,patch,0);
-
- readValue = digitReader->Next();
-
- if (!readValue){
- LOG(AliHLTTPCLog::kError,"AliHLTTPCDisplay::FillPadRow","Read first value") << "No value in data block" << ENDLOG;
- return;
- }
-
- // FILL PADROW 3D --- Initialize the colorbins
- if (fSwitch3DPadRow){
- for (UInt_t ii=0;ii < 20;ii++){
- fbinct[ii] = 0;
- fcolorbin[ii] = 0;
- }
-
- // read number of entries in colorbin
- while ( readValue ){
-
- Int_t row = digitReader->GetRow() + rowOffset;
-
- if (row == fPadRow){
- UInt_t charge = digitReader->GetSignal();
-
- for (UInt_t ii=0;ii < 19;ii++){
- if ( charge > (ii*15) && charge <= ((ii*15) + 15) ) fcolorbin[ii]++;
- }
- // larger than 19 * 15
- if (charge > 285 ) fcolorbin[19]++;
- }
-
- // read next value
- readValue = digitReader->Next();
-
- if(!readValue) break; //No more value
- }
- //Initialize fpmarr[color][3*colorbin[ii]]
- fpmarr[0] = new Float_t[fcolorbin[0]*3];
- fpmarr[1] = new Float_t[fcolorbin[1]*3];
- fpmarr[2] = new Float_t[fcolorbin[2]*3];
- fpmarr[3] = new Float_t[fcolorbin[3]*3];
- fpmarr[4] = new Float_t[fcolorbin[4]*3];
- fpmarr[5] = new Float_t[fcolorbin[5]*3];
- fpmarr[6] = new Float_t[fcolorbin[6]*3];
- fpmarr[7] = new Float_t[fcolorbin[7]*3];
- fpmarr[8] = new Float_t[fcolorbin[8]*3];
- fpmarr[9] = new Float_t[fcolorbin[9]*3];
- fpmarr[10] = new Float_t[fcolorbin[10]*3];
- fpmarr[11] = new Float_t[fcolorbin[11]*3];
- fpmarr[12] = new Float_t[fcolorbin[12]*3];
- fpmarr[13] = new Float_t[fcolorbin[13]*3];
- fpmarr[14] = new Float_t[fcolorbin[14]*3];
- fpmarr[15] = new Float_t[fcolorbin[15]*3];
- fpmarr[16] = new Float_t[fcolorbin[16]*3];
- fpmarr[17] = new Float_t[fcolorbin[17]*3];
- fpmarr[18] = new Float_t[fcolorbin[18]*3];
- fpmarr[19] = new Float_t[fcolorbin[19]*3];
-
- // Rewind the raw reader and fill the polymarker3D
- digitReader->InitBlock(tmpdataBlock,dataLen,firstRow,lastRow,patch,0);
-
- readValue = digitReader->Next();
- } // END if (fSwitch3DPadRow)
-
- // -- Fill Raw Data
- while ( readValue ){
-
- Int_t row = digitReader->GetRow() + rowOffset;
-
- // select padrow to fill in histogramm
- if (row == fPadRow){
- UChar_t pad = digitReader->GetPad();
- UShort_t time = digitReader->GetTime();
- UInt_t charge = digitReader->GetSignal();
- Float_t xyz[3];
- fHistraw->Fill(pad,time,charge);
-
- if (pad == (fPad-1) ) fHistpad1->Fill(time,charge);
- if (pad == fPad) fHistpad2->Fill(time,charge);
- if (pad == (fPad+1) ) fHistpad3->Fill(time,charge);
-
- if (fSwitch3DPadRow) {
- // Transform raw coordinates to local coordinates
- AliHLTTPCTransform::RawHLT2Global(xyz, fSlicePadRow, fPadRow, pad, time);
-
- for (UInt_t ii=0;ii < 19;ii++){
- if ( charge > (ii*15) && charge <= ((ii*15) + 15) ){
- fpmarr[ii][fbinct[ii]] = xyz[0];
- fpmarr[ii][fbinct[ii]+1] = xyz[1];
- fpmarr[ii][fbinct[ii]+2] = xyz[2];
- fbinct[ii] += 3;
- }
- }
- // larger than 19 * 15
- if (charge > 285 ) {
- fpmarr[19][fbinct[19]] = xyz[0];
- fpmarr[19][fbinct[19]+1] = xyz[1];
- fpmarr[19][fbinct[19]+2] = xyz[2];
- fbinct[19] += 3;
- }
- } // END if (fSwitch3DPadRow)
-
- }
-
- // read next value
- readValue = digitReader->Next();
-
- //Check where to stop:
- if(!readValue) break; //No more value
- }
-
- if ( digitReader )
- delete digitReader;
- digitReader = NULL;
-
- AliHLTTPCSpacePointData *points = fClusters[fSlicePadRow][patch];
- if(!points) return;
- Int_t npoints = fNcl[fSlicePadRow][patch];
-
- Float_t xyz[3];
- for(Int_t i=0; i<npoints; i++){
- xyz[0] = points[i].fX;
- xyz[1] = points[i].fY;
- xyz[2] = points[i].fZ;
-
- Int_t clrow = AliHLTTPCTransform::GetPadRow(xyz[0]);
- // select padrow to fill in histogramm
- if (clrow == fPadRow){
- AliHLTTPCTransform::LocHLT2Raw(xyz, fSlicePadRow, fPadRow);
- fHistrawcl->Fill(xyz[1],xyz[2]);
- }
- }
-}
-
-// #############################################################################
-void AliHLTTPCDisplay::ResetHistPadRow(){
- fHistraw->Reset();
- fHistrawcl->Reset();
- fHistpad1->Reset();
- fHistpad2->Reset();
- fHistpad3->Reset();
-}
-
-// #############################################################################
-void AliHLTTPCDisplay::ResetHistResiduals(){
- fHistallresidualsY->Reset();
- fHistallresidualsZ->Reset();
-}
-
-// #############################################################################
-void AliHLTTPCDisplay::ResetHistCharge(){
- fHistcharge->Reset();
-}
-
-
-// #############################################################################
-// DRAWER
-// #############################################################################
-void AliHLTTPCDisplay::DrawGeomSector(Int_t sector) {
- Char_t fname[256];
- Int_t realsector = sector;// % 18;
-
- if (realsector < 10){
- sprintf(fname,"LS0%d",realsector);
- fGeom->GetNode(fname)->SetLineColor(fLineColor);
- fGeom->GetNode(fname)->Draw("same");
- sprintf(fname,"US0%d",realsector);
- fGeom->GetNode(fname)->SetLineColor(fLineColor);
- fGeom->GetNode(fname)->Draw("same");
- }
- else {
- sprintf(fname,"LS%d",realsector);
- fGeom->GetNode(fname)->SetLineColor(fLineColor);
- fGeom->GetNode(fname)->Draw("same");
- sprintf(fname,"US%d",realsector);
- fGeom->GetNode(fname)->SetLineColor(fLineColor);
- fGeom->GetNode(fname)->Draw("same");
- }
-}
-// #############################################################################
-void AliHLTTPCDisplay::DrawHistPadRow(){
- Char_t title[256];
- sprintf(title,"Selected PadRow %d with found Clusters",fPadRow);
-
- fHistraw->SetTitle(title);
- fHistraw->SetStats(kFALSE);
- fHistraw->Draw("COLZ");
-
- fHistrawcl->SetStats(kFALSE);
- fHistrawcl->SetMarkerStyle(28);
- fHistrawcl->SetMarkerSize(2);
- fHistrawcl->SetMarkerColor(1);
- fHistrawcl->Draw("psame");
-}
-
-// #############################################################################
-void AliHLTTPCDisplay::DrawHistPad1(){
- Char_t title[256];
- sprintf(title,"Selected Pad %d",fPad -1);
- fHistpad1->SetStats(kFALSE);
- fHistpad1->SetTitle(title);
- fHistpad1->Draw();
-}
-
-// #############################################################################
-void AliHLTTPCDisplay::DrawHistPad2(){
- Char_t title[256];
- sprintf(title,"Selected Pad %d",fPad);
-
- fHistpad2->SetStats(kFALSE);
- fHistpad2->SetTitle(title);
- fHistpad2->Draw();
-}
-
-// #############################################################################
-void AliHLTTPCDisplay::DrawHistPad3(){
- Char_t title[256];
- sprintf(title,"Selected Pad %d",fPad +1);
-
- fHistpad3->SetStats(kFALSE);
- fHistpad3->SetTitle(title);
- fHistpad3->Draw();
-}
-
-// #############################################################################
-void AliHLTTPCDisplay::DrawHistResiduals(Bool_t ySwitch){
- if (fSwitch3DTracks){
- if (ySwitch){
- // Y Residual histogram for 1 track
-
- if (fSelectTrackSwitch){
- Char_t title[256];
- sprintf(title,"Y Residuals of Track %d in Slice %d",fSelectTrack, fSelectTrackSlice );
-
- TMultiGraph *mgY = new TMultiGraph();
-
-
-// fGraphresidualsY->SetTitle(title);
- fGraphresidualsY->GetXaxis()->SetTitle("padrow");
- fGraphresidualsY->GetYaxis()->SetTitle("residuals");
-// fGraphresidualsY->Draw("A*");
- fGraphresidualsY->GetXaxis()->SetLabelSize(0.02);
- fGraphresidualsY->GetXaxis()->SetTitleSize(0.02);
- fGraphresidualsY->GetYaxis()->SetLabelSize(0.02);
- fGraphresidualsY->GetYaxis()->SetTitleSize(0.02);
- fGraphresidualsYLength->SetMarkerColor(2);
- fGraphresidualsYLength->SetMarkerStyle(5);
- fGraphresidualsY->SetMarkerColor(1);
- fGraphresidualsY->SetMarkerStyle(3);
-
-// fGraphresidualsY->Draw("A*");
-// fGraphresidualsYLength->Draw("*");
-
- mgY->Add(fGraphresidualsY);
- mgY->Add(fGraphresidualsYLength);
- mgY->SetTitle(title);
-// mgY->GetXaxis()->SetTitle("padrow");
-// mgY->GetYaxis()->SetTitle("residuals");
- mgY->Draw("AP");
- }
- // Global residuals histogram
- else{
- fHistallresidualsY->SetStats(kFALSE);
- fHistallresidualsY->Draw();
- }
- }
- else {
- // Z Residual histogram for 1 track
- if (fSelectTrackSwitch){
- Char_t title[256];
- sprintf(title,"Z Residuals of Track %d in Slice %d",fSelectTrack, fSelectTrackSlice );
-
- TMultiGraph *mgZ = new TMultiGraph();
-
- fGraphresidualsZ->SetTitle(title);
- fGraphresidualsZ->GetXaxis()->SetTitle("padrow");
- fGraphresidualsZ->GetYaxis()->SetTitle("residuals");
- fGraphresidualsZ->GetXaxis()->SetLabelSize(0.02);
- fGraphresidualsZ->GetXaxis()->SetTitleSize(0.02);
- fGraphresidualsZ->GetYaxis()->SetLabelSize(0.02);
- fGraphresidualsZ->GetYaxis()->SetTitleSize(0.02);
-// fGraphresidualsZLength->Draw("F*");
-// fGraphresidualsZ->Draw("A*");
-
- mgZ->Add(fGraphresidualsZ);
-// mgZ->Add(fGraphresidualsZLength);
- mgZ->SetTitle(title);
- mgZ->Draw("A*");
- }
- // Global residuals histogram
- else{
- fHistallresidualsZ->SetStats(kFALSE);
- fHistallresidualsZ->Draw();
- }
- }
- }
-}
-
-// #############################################################################
-void AliHLTTPCDisplay::DrawHistCharge(){
- if (fSwitch3DCluster){
-// fHistcharge->SetStats(kFALSE);
- fHistcharge->Draw();
- }
-}
-
-// #############################################################################
-void AliHLTTPCDisplay::Draw3D(){
-
-#ifndef HAVE_NOT_TVIEW3D
- TView3D *v = new TView3D();
- if (v) v->SetSystem(1);
-#else
- TView *v = new TView(1);
-#endif
- if (v==NULL) {
- HLTFatal("can not create viewer");
- return;
- }
- v->SetRange(-800,-800,-800,800,800,800);
-
- Float_t* etaRange = NULL; // ------ STILL TO FIX
-
-
- //--------------------------------------------------------------------------------------------
- // DRAW 3D CLUSTER
- //--------------------------------------------------------------------------------------------
- if (fSwitch3DCluster){
- Int_t maxCharge = 0;
-
- for (Int_t slice=0; slice <= 35; slice++){
-
- Int_t currenttrack = -1;
-
- if (fSelectCluster == 1 && fSelectTrackSwitch && slice == fSelectTrackSlice ){
-
- Int_t trackcounter = 0;
- Int_t ntracks = fTracks->GetNTracks();
-
- for(Int_t j=0; j<ntracks; j++) {
-
- AliHLTTPCTrack *gtrack = fTracks->GetCheckedTrack(j);
- if(!gtrack) continue;
-
- Int_t nHits = gtrack->GetNHits(); // Number of associated hits to track
- Int_t tmpslice = gtrack->GetSector();
-
- // --- CHECK if track is should be drawn
- // select Single Track
- if(tmpslice != fSelectTrackSlice) continue;
-
- if (trackcounter != fSelectTrack){
- trackcounter++;
- continue;
- }
- trackcounter++;
-
- if((fPtThreshold > 0) && (gtrack->GetPt()< fPtThreshold)) continue;
- if(nHits < fMinHits) continue;
-
- currenttrack = j;
- break;
- }
- }
-
- if (!fSliceArray[slice]) continue;
-
- for(Int_t p=0;p<6;p++){
-
- AliHLTTPCSpacePointData *points = fClusters[slice][p];
- if(!points) continue;
- Int_t npoints = fNcl[slice][p];
- TPolyMarker3D *pmUsed = new TPolyMarker3D(1,6);
- TPolyMarker3D *pmUnused = new TPolyMarker3D(1,6);
- Int_t nUsedCluster = 0;
- Int_t nUnusedCluster = 0;
-
- Float_t xyz[3];
- for(Int_t i=0; i<npoints; i++){
- // Used cluster only
- if (fSelectCluster == 1 && points[i].fUsed == kFALSE) continue;
- // Unused cluster only
- if (fSelectCluster == 2 && points[i].fUsed == kTRUE) continue;
-
- // if single track is selcted draw only cluster for this track
- if (fSelectCluster == 1 && fSelectTrackSwitch && points[i].fTrackN != currenttrack) continue;
-
- xyz[0] = points[i].fX;
- xyz[1] = points[i].fY;
- xyz[2] = points[i].fZ;
-
- if ( etaRange ){
- // Do this before the transform, because the tracker also uses
- // local coordinates when using this limit to determine
- // which clusters to use for tracking
- Double_t pointEta = AliHLTTPCTransform::GetEta( xyz );
- if ( pointEta<etaRange[0] || pointEta>etaRange[1] )
- continue;
- }
-
- AliHLTTPCTransform::Local2Global(xyz,slice);
-
- if (points[i].fUsed == kTRUE){
- pmUsed->SetPoint(nUsedCluster,xyz[0],xyz[1],xyz[2]);
- nUsedCluster++;
- }
- else {
- pmUnused->SetPoint(nUnusedCluster,xyz[0],xyz[1],xyz[2]);
- nUnusedCluster++;
- }
-
- // Fill Charge Histogram
- fHistcharge->Fill(points[i].fCharge);
- if ((Int_t)points[i].fCharge > maxCharge ) maxCharge = (Int_t) points[i].fCharge;
- }
- pmUsed->SetMarkerSize(1);
- pmUsed->SetMarkerColor(3);
- pmUsed->Draw("");
-
- pmUnused->SetMarkerSize(1);
- pmUnused->SetMarkerColor(2);
- pmUnused->Draw("");
- } // END - PATCH LOOP
- } // END - SLICE LOOP
- fHistcharge->SetAxisRange(0,maxCharge);
- } // END - DRAW 3D CLUSTER
-
- //--------------------------------------------------------------------------------------------
- // DRAW 3D TRACKS
- //--------------------------------------------------------------------------------------------
- if (fSwitch3DTracks){
-
- Int_t trackcounter = 0;
- Int_t ntracks = fTracks->GetNTracks();
- Double_t drawStep = 0.2;
-
- Double_t maxResidualY = 0.;
- Double_t maxResidualZ = 0.;
-
- TPolyLine3D *line = new TPolyLine3D[ntracks];
-#if TRACKHELIX
- THelix *helix = new THelix[ntracks];
-#endif
- for(Int_t j=0; j<ntracks; j++) {
-
- AliHLTTPCTrack *gtrack = fTracks->GetCheckedTrack(j);
- if(!gtrack) continue;
-
- Int_t nHits = gtrack->GetNHits(); // Number of associated hits to track
- Int_t slice = gtrack->GetSector();
-
- // --- CHECK if track is should be drawn
- // select if slice should be displayed or not
- if (!fSliceArray[slice]) continue;
-
- // select Single Track
- if (fSelectTrackSwitch){
- if(slice != fSelectTrackSlice) continue;
-
- if (trackcounter != fSelectTrack){
- trackcounter++;
- continue;
- }
- trackcounter++;
- }
-
- if((fPtThreshold > 0) && (gtrack->GetPt()< fPtThreshold)) continue;
- if(nHits < fMinHits) continue;
-
- TPolyMarker3D *pmL = new TPolyMarker3D(1,2);
- TPolyMarker3D *pmF = new TPolyMarker3D(1,2);
-
- Double_t radius = gtrack->GetRadius(); // radius
- Double_t kappa = gtrack->GetKappa(); // curvature = 1/R , signed
- Double_t lambda = atan( gtrack->GetTgl() ); // dipAngle lambda
- Double_t phi0 = gtrack->GetPsi() + (gtrack->GetCharge() * AliHLTTPCTransform::PiHalf() ); // azimuthal angle of startingpoint, with respect to helix axis
-
- Double_t xyzL[3]; // lastpoint of track
- Double_t xyzF[3]; // firstpoint of track
-
- xyzF[0] = gtrack->GetFirstPointX();
- xyzF[1] = gtrack->GetFirstPointY();
- xyzF[2] = gtrack->GetFirstPointZ();
- pmF->SetPoint(0,xyzF[0],xyzF[1],xyzF[2]);
-
- xyzL[0] = gtrack->GetLastPointX();
- xyzL[1] = gtrack->GetLastPointY();
- xyzL[2] = gtrack->GetLastPointZ();
- pmL->SetPoint(0,xyzL[0],xyzL[1],xyzL[2]);
-
- Double_t s = 0.; // length of the track
-
- // Calculate the length of the track. If it is to flat in in s,z plane use sxy, otherwise use sz
- if (fabs(lambda) > 0.05){
- // length of track calculated out of z
- s = fabs( (xyzL[2] - xyzF[2]) / sin(lambda) ); // length of track calculated out of z
- }
- else {
- Double_t d = (xyzL[0] - xyzF[0])*(xyzL[0] - xyzF[0]) + (xyzL[1] - xyzF[1])*(xyzL[1] - xyzF[1]);
- // length of track calculated out of xy
- s = fabs ( acos( 0.5 * (2 - (d / (radius*radius)))) / ( kappa * cos(lambda) ) );
- }
-
- Int_t nTrackPoints = 2 + (Int_t) floor(s / drawStep);
-
-#if TRACKPOLYMARKER
- TPolyMarker3D *pmT = new TPolyMarker3D(nTrackPoints,6);
-#endif
-
- Double_t *xT = new Double_t[nTrackPoints];
- Double_t *yT = new Double_t[nTrackPoints];
- Double_t *zT = new Double_t[nTrackPoints];
-
- //Write Track Parameters for single track
- if (fSelectTrackSwitch){
- fTrackParam.id = trackcounter - 1;
- fTrackParam.nHits = nHits;
- fTrackParam.charge = gtrack->GetCharge();
- fTrackParam.lambda = lambda;
- fTrackParam.kappa = kappa;
- fTrackParam.radius = radius;
- fTrackParam.slice = slice;
- fTrackParam.phi0 = phi0;
- fTrackParam.pt = gtrack->GetPt();
- fTrackParam.bfield = AliHLTTPCTransform::GetBFieldValue();
- fTrackParam.xyzF[0] = gtrack->GetFirstPointX();
- fTrackParam.xyzF[1] = gtrack->GetFirstPointY();
- fTrackParam.xyzF[2] = gtrack->GetFirstPointZ();
- fTrackParam.xyzL[0] = gtrack->GetLastPointX();
- fTrackParam.xyzL[1] = gtrack->GetLastPointY();
- fTrackParam.xyzL[2] = gtrack->GetLastPointZ();
- fTrackParam.psi = gtrack->GetPsi();
- fTrackParam.s = s;
- }
-
- Int_t trackPointCounter = 0;
-
- for (Double_t ds = 0.; ds < s; ds = ds + drawStep){
- // FILL ARRAYS IN ORDER TO DRAW THE TRACKPOINTS, OUT OF THE PARAMETER
- xT[trackPointCounter] = xyzF[0] + radius * ( cos( phi0 + (ds*kappa*cos(lambda)) ) - cos(phi0) );
- yT[trackPointCounter] = xyzF[1] + radius * ( sin( phi0 + (ds*kappa*cos(lambda)) ) - sin(phi0) );
- zT[trackPointCounter] = xyzF[2] + ds * sin(lambda);
-#if TRACKPOLYMARKER
- pmT->SetPoint(trackPointCounter,xT[trackPointCounter],yT[trackPointCounter],zT[trackPointCounter]);
-#endif
- trackPointCounter++;
- }
-
- xT[trackPointCounter] = xyzF[0] + radius * ( cos( phi0 + (s*kappa*cos(lambda)) ) - cos(phi0) );
- yT[trackPointCounter] = xyzF[1] + radius * ( sin( phi0 + (s*kappa*cos(lambda)) ) - sin(phi0) );
- zT[trackPointCounter] = xyzF[2] + s * sin(lambda);
-#if TRACKPOLYMARKER
- pmT->SetPoint(trackPointCounter,xT[trackPointCounter],yT[trackPointCounter],zT[trackPointCounter]);
-#endif
- // --- RESIDUALS ---
- gtrack->Rotate(slice,kTRUE);
- Int_t nRes = 0; // number of resiudals
-
- UInt_t *hitnum = gtrack->GetHitNumbers();
-
- Double_t *resY= new Double_t[nHits];
- Double_t *resZ= new Double_t[nHits];
-
- Double_t *resYLength= new Double_t[2*nHits];
- Double_t *resZLength= new Double_t[2*nHits];
-
- Double_t *padrows = new Double_t[nHits];
- Double_t *padrowsLength = new Double_t[2*nHits];
-
- for(Int_t h=0; h<nHits; h++){
- UInt_t id=hitnum[h];
- Int_t patch = (id>>22) & 0x7;
- UInt_t pos = id&0x3fffff;
-
- AliHLTTPCSpacePointData *points = fClusters[slice][patch];
-
- Float_t xyzCtmp[3]; // cluster tmp
- Float_t xyzTtmp[3]; // track tmp
-
- xyzCtmp[0] = points[pos].fX;
- xyzCtmp[1] = points[pos].fY;
- xyzCtmp[2] = points[pos].fZ;
-
- Int_t padrow = AliHLTTPCTransform::GetPadRow(points[pos].fX);
- xyzTtmp[0] = gtrack->GetFirstPointX();
- if(gtrack->GetCrossingPoint(padrow,xyzTtmp)) {
-
- Float_t deltaY = ( xyzCtmp[1] - xyzTtmp[1] );
- Float_t deltaZ = ( xyzCtmp[2] - xyzTtmp[2] );
-// Float_t residual = sqrt( deltaY*deltaY + deltaZ*deltaZ );
-
- padrows[nRes] = (Double_t) padrow;
- resY[nRes] = (Double_t) deltaY;
- resZ[nRes] = (Double_t) deltaZ;
-
- resYLength[(2*nRes)] = 0.5 * AliHLTTPCTransform::GetPadLength(padrow);
- resYLength[(2*nRes)+1] = -0.5 * AliHLTTPCTransform::GetPadLength(padrow);
- resZLength[nRes] = AliHLTTPCTransform::GetZLength();
- padrowsLength[(2*nRes)] = (Double_t) padrow;
- padrowsLength[(2*nRes)+1] = (Double_t) padrow;
-
- // FILL RESIDUALS HISTOGRAM
- fHistallresidualsY->Fill(resY[nRes]);
- fHistallresidualsZ->Fill(resZ[nRes]);
- if (resY[nRes] > maxResidualY ) maxResidualY = resY[nRes];
- if (resZ[nRes] > maxResidualZ ) maxResidualZ = resZ[nRes];
- nRes++;
- }
- }
-
- gtrack->Rotate(slice,kFALSE);
- // --- RESIDUALS ---
-
- // Draw last point of Track
- pmL->SetMarkerSize(3);
- pmL->SetMarkerColor(4);
-// pmL->Draw();
-
- // Draw first point of Track
- pmF->SetMarkerSize(3);
- pmF->SetMarkerColor(5);
-// pmF->Draw();
-
-#if TRACKPOLYMARKER
- // Draw Track -- as polymarker
- pmT->SetMarkerSize(3);
- pmT->SetMarkerColor(3);
- pmT->Draw();
-#endif
- // Draw Track -- as line
- TPolyLine3D *currentline = &(line[j]);
- currentline = new TPolyLine3D(nTrackPoints,xT,yT,zT,"");
- currentline->SetLineColor(4);
- currentline->SetLineWidth(2);
- currentline->Draw("same");
-
-#if TRACKHELIX
- // Draw Track -- as helix
- // works ok, execpt for very small dipangles -> track almost horizontal
- Double_t hrange[2];
- Double_t v0[3];
- Double_t omega;
- hrange[0] = xyzF[2];
- hrange[1] = xyzL[2];
- v0[0] = gtrack->GetPx();
- v0[1] = gtrack->GetPy();
- v0[2] = gtrack->GetPz();
- omega = AliHLTTPCTransform::GetBFieldValue() * gtrack->GetCharge();
-
- THelix *currenthelix = &(helix[j]);
- currenthelix = new THelix(xyzF,v0,omega,hrange,kHelixZ,0);
- currenthelix->SetLineColor(6);
- currenthelix->SetLineWidth(1);
- currenthelix->Draw("same");
-#endif
-
- //Residuals
- if ( fGraphresidualsY){
- delete fGraphresidualsY;
- fGraphresidualsY = NULL;
- }
-
- if ( fGraphresidualsZ){
- delete fGraphresidualsZ;
- fGraphresidualsZ = NULL;
- }
- //Residuals
- if ( fGraphresidualsYLength){
- delete fGraphresidualsYLength;
- fGraphresidualsYLength = NULL;
- }
-
- if ( fGraphresidualsZLength){
- delete fGraphresidualsZLength;
- fGraphresidualsZLength = NULL;
- }
-
-
-
- // FILL Y RESIDUALS GRAPH
- fGraphresidualsY = new TGraph(nRes-1,padrows,resY);
- fGraphresidualsYLength = new TGraph((2*nRes)-2,padrowsLength,resYLength);
- // FILL Z RESIDUALS GRAPH
- fGraphresidualsZ = new TGraph(nRes-1,padrows,resZ);
- fGraphresidualsZLength = new TGraph(nRes-1,padrows,resZLength);
-
- if (xT) delete xT;
- if (yT) delete yT;
- if (zT) delete zT;
-
- } // END for tracks
-
- fHistallresidualsY->SetAxisRange(-maxResidualY,maxResidualY);
- fHistallresidualsZ->SetAxisRange(-maxResidualZ,maxResidualZ);
-
- } // END - DRAW 3D Tracks
-
- //--------------------------------------------------------------------------------------------
- // DRAW 3D GEOMETRY
- //--------------------------------------------------------------------------------------------
- if (fSwitch3DGeometry){
-
- for (Int_t slice=0; slice <= 17; slice++){
- if (!fSliceArray[slice]) continue;
- DrawGeomSector(slice);
- }
- } // END - DRAW 3D GEOMETRY
-
- //--------------------------------------------------------------------------------------------
- // DRAW 3D PadRow
- //--------------------------------------------------------------------------------------------
- if (fSwitch3DPadRow && fSliceArray[fSlicePadRow]){
- Int_t markercolor = 51;
-
- for (UInt_t ii=0;ii < 20;ii++){
- if (fcolorbin[ii]> 0){
-
- TPolyMarker3D *pm = new TPolyMarker3D(fcolorbin[ii], fpmarr[ii], 7 );
-
- pm->SetMarkerColor(markercolor);
- pm->Draw("");
- }
-
- // in order to have the SetPalette(1), so called "pretty"
- if (ii % 2 == 0 ) markercolor += 2;
- else markercolor += 3;
- }
- }
-
- //--------------------------------------------------------------------------------------------
- // DRAW 3D
- //--------------------------------------------------------------------------------------------
- v->ZoomView(0,4);
- v->Draw();
-}
-
-// ---------------------------------------------------
-// In order to be backward compatible
-// ---------------------------------------------------
-#if BACKWARD
-void AliHLTTPCDisplay::DisplayClusters(Bool_t x3don,Float_t* etaRange) {
- if (!fc1){
- fc1 = new TCanvas("c1","",900,900);
- fc1->cd();
- }
-
- fSwitch3DTracks = kFALSE;
- fSwitch3DCluster = kTRUE;
- fSwitch3DPadRow = kFALSE;
- fSwitch3DGeometry = kFALSE;
-
- Draw3D();
-}
-// ---------------------------------------------------
-void AliHLTTPCDisplay::DisplayTracks(Int_t minhits,Bool_t x3don,Float_t thr) {
- if (!fc1){
- fc1 = new TCanvas("c1","",900,900);
- fc1->cd();
- }
-
- fMinHits = minhits;
- fPtThreshold = thr;
- fSwitch3DTracks = kTRUE;
- fSwitch3DCluster = kFALSE;
- fSwitch3DPadRow = kFALSE;
- fSwitch3DGeometry = kFALSE;
-
- Draw3D();
-}
-// ---------------------------------------------------
-void AliHLTTPCDisplay::DisplayAll(Int_t minhits,Bool_t clusterswitch,Bool_t trackswitch,Bool_t x3don, Float_t thr, Float_t* etaRange){
- if (!fc1){
- fc1 = new TCanvas("c1","",900,900);
- fc1->cd();
- }
-
- fMinHits = minhits;
- fPtThreshold = thr;
- fSwitch3DTracks = trackswitch;
- fSwitch3DCluster = clusterswitch;
- fSwitch3DPadRow = kFALSE;
- fSwitch3DGeometry = kFALSE;
-
- Draw3D();
-}
-#endif
-// ---------------------------------------------------
+++ /dev/null
-// XEmacs -*-C++-*-
-// @(#) $Id$
-// Original: AliHLTDisplay.h,v 1.14 2004/06/30 08:30:14 loizides
-
-//* This file is property of and copyright by the ALICE HLT Project *
-//* ALICE Experiment at CERN, All rights reserved. *
-//* See cxx source for full Copyright notice *
-
-/** @file AliHLTTPCDisplay.h
- @author Jochen Thaeder, Anders Vestbo
- @date
- @brief Display class for the HLT TPC events.
-*/
-
-#ifndef ALIHLTTPCDISPLAY_H
-#define ALIHLTTPCDISPLAY_H
-
-#include <TGeometry.h>
-#include <TObject.h>
-#include <TCanvas.h>
-#include <TH2.h>
-#include <TGraph.h>
-#include "AliHLTLogging.h"
-
-class AliHLTTPCSpacePointData;
-class AliHLTTPCTrackArray;
-
-class AliHLTTPCDisplay : public TObject, public AliHLTLogging {
-
- public:
- AliHLTTPCDisplay(Char_t *gfile="$(ALIHLT_BASEDIR)/geo/alice.geom");
- virtual ~AliHLTTPCDisplay();
-
- void InitDisplay(Char_t *gfile);
-
- // SETUP
- void SetupHist();
- void SetupCluster(Int_t slice, Int_t patch, UInt_t nofClusters, AliHLTTPCSpacePointData* data);
- void SetupTracks(AliHLTTPCTrackArray *tracks);
-
- // HISTOGRAM FILL/RESET FUNCTIONS
- void FillPadRow(Int_t patch, ULong_t dataBlock, ULong_t dataLen);
- void ResetHistPadRow();
- void ResetHistResiduals();
- void ResetHistCharge();
-
- // DRAWER
- void Draw3D();
- void DrawHistPadRow();
- void DrawGeomSector(Int_t sector);
- void DrawHistPad1();
- void DrawHistPad2();
- void DrawHistPad3();
- void DrawHistResiduals(Bool_t ySwitch);
- void DrawHistCharge();
-
- // SETTER
- void SetSlices(){fMinSlice = 0; fMaxSlice = 35; fSlicePair = kFALSE; SetSliceArray();}
- void SetSlices(Int_t s){fMinSlice = s; fMaxSlice = s; fSlicePair = kFALSE; SetSliceArray();}
- void SetSlices(Int_t mins, Int_t maxs){fMinSlice = mins; fMaxSlice = maxs; fSlicePair = kFALSE; SetSliceArray();}
- void SetSlicesPair(Int_t s){fMinSlice = s; fMaxSlice = s; fSlicePair = kTRUE; SetSliceArray();}
- void SetSlicesPair(Int_t mins, Int_t maxs){fMinSlice = mins; fMaxSlice = maxs; fSlicePair = kTRUE; SetSliceArray();}
-
- void SetPad(Int_t f){fPad = f;}
- void SetPadRow(Int_t f){fPadRow = f;}
- void SetSlicePadRow(Int_t f){fSlicePadRow = f;}
-
- void SetMinHits(Int_t f){fMinHits = f;}
- void SetPtThreshold(Float_t f){fPtThreshold = f;}
-
- void SetSwitches(Bool_t f1, Bool_t f2, Bool_t f3, Bool_t f4) {fSwitch3DTracks = f1; fSwitch3DCluster = f2; fSwitch3DPadRow = f3; fSwitch3DGeometry = f4;}
- void Set3DSwitchTracks(Bool_t f1) {fSwitch3DTracks = f1;}
- void Set3DSwitchCluster(Bool_t f1) {fSwitch3DCluster = f1;}
- void Set3DSwitchPadRow(Bool_t f1) {fSwitch3DPadRow = f1;}
- void Set3DSwitchGeometry(Bool_t f1) {fSwitch3DGeometry = f1;}
-
- void SetSelectTrack(Int_t f) {fSelectTrack = f;}
- void SetSelectTrackSlice(Int_t f) {fSelectTrackSlice = f;}
- void SetSelectTrackSwitch(Bool_t f) {fSelectTrackSwitch = f;}
- void SetSelectCluster(Int_t f) {fSelectCluster = f;}
-
- void SetHistPadRowAxis();
-
- void SetInvert() {Int_t tmp = fBackColor; fBackColor = fLineColor; fLineColor = tmp; }
- void SetKeepView(Bool_t f){fKeepView = f;}
-
- // GETTER
- Int_t GetPadRow(){return fPadRow;}
- Int_t GetSlicePadRow(){return fSlicePadRow;}
- Int_t GetNPads(){return fNPads;}
- Int_t GetBackColor(){return fBackColor;}
- Bool_t GetKeepView(){return fKeepView;}
-
- Bool_t Get3DSwitchTracks() {return fSwitch3DTracks;}
- Bool_t Get3DSwitchCluster() {return fSwitch3DCluster;}
- Bool_t Get3DSwitchPadRow() {return fSwitch3DPadRow;}
-
- Bool_t GetSelectTrackSwitch() {return fSelectTrackSwitch;}
-
- // EXECUTER
- void ExecPadRow();
-
- struct AliHLTTPCTrackParameter{
- Int_t nHits;
- Int_t charge;
- Double_t kappa;
- Double_t radius;
- Double_t xyzF[3];
- Double_t xyzL[3];
- Int_t slice;
- Double_t phi0;
- Double_t psi;
- Double_t lambda;
- Double_t pt;
- Int_t id;
- Double_t bfield;
- Double_t s;
- };
-
- AliHLTTPCTrackParameter fTrackParam;
-
-// ---------------------------------------------------
-// In order to be backward compatible
-// ---------------------------------------------------
-/*
- AliHLTTPCDisplay(Int_t *slice, Char_t *gfile ) { InitDisplay(gfile);}
-
- // SETUP
- void SetupClusterDataForPatch(Int_t slice, Int_t patch, UInt_t nofClusters, AliHLTTPCSpacePointData* data) {SetupCluster(slice, patch, nofClusters, data);}
- void SetTracks(AliHLTTPCTrackArray *tracks) { SetupTracks(tracks);}
- void DisplayClusters(Bool_t x3don=kTRUE,Float_t* etaRange=NULL);
- void DisplayTracks(Int_t minhits=10,Bool_t x3don=kTRUE,Float_t thr=0.);
- void DisplayAll(Int_t minhits=10,Bool_t clusterswitch=kTRUE,Bool_t trackswitch=kTRUE,Bool_t x3don=kTRUE, Float_t thr=0., Float_t* etaRange=NULL);
-*/
-// ---------------------------------------------------
- private:
-// ---------------------------------------------------
-// In order to be backward compatible
-// ---------------------------------------------------
-/* TCanvas *fc1; */
-// ---------------------------------------------------
- Bool_t LoadGeometrie(Char_t *gfile);
- void SetSliceArray();
-
- AliHLTTPCDisplay(const AliHLTTPCDisplay &/*d*/); //:TObject(){;}
- AliHLTTPCDisplay& operator=(const AliHLTTPCDisplay &/*d*/);//{return *this;}
-
- AliHLTTPCSpacePointData *fClusters[36][6];
- AliHLTTPCTrackArray *fTracks;
-
- UInt_t fNcl[36][6];//number of cluster
-
- TH1F *fHistrawcl; // histogram for cluster in padrow
- TH2F *fHistraw; // histogram for signals in padrow
- TH1F *fHistpad1; // histogram for pad in padrow
- TH1F *fHistpad2; // histogram for pad in padrow
- TH1F *fHistpad3; // histogram for pad in padrow
- TH1F *fHistallresidualsY;//histogram for all Y residuals
- TH1F *fHistallresidualsZ;//histogram for all Z residuals
- TH1F *fHistcharge; // histogram for clustercharge
-
- TGraph *fGraphresidualsY; // graph of the Y residuals for one track
- TGraph *fGraphresidualsZ; // graph of the Z residuals for one track
- TGraph *fGraphresidualsYLength; // graph of the Y residuals for one track
- TGraph *fGraphresidualsZLength; // graph of the Z residuals for one track
-
-
- TGeometry *fGeom; // geometry
- Int_t fBackColor; // Background color
- Int_t fLineColor; // Line color
- Bool_t fKeepView; // Keep View when redisplaying
-
- Int_t fPad; // pad
- Int_t fPadRow; // padrow
- Int_t fSlicePadRow;// slice where padrow is in
- Int_t fNPads; // number of pads in padrow
- Int_t fNTimes; // number of timebins
- Int_t fMinHits; // minimum cluster per track
- Float_t fPtThreshold;// pt threshold for tracks
-
- Bool_t fSelectTrackSwitch;// switch ti single track mode
- Int_t fSelectTrack;// select single track
- Int_t fSelectTrackSlice; // select slice for single track
-
- Int_t fSelectCluster; // select all=0, used=1, unused=2 cluster
-
- Int_t fMinSlice; //min slice
- Int_t fMaxSlice; //max slice
- Bool_t fSlicePair; //draw pair of slices;
- Bool_t fSliceArray[36];//Array if slice should be drawn or not
-
- Bool_t fDrawGeo;
- Int_t fcolorbin[20]; // number of entries per colorbin
- Int_t fbinct[20]; // index of colorbin
- Float_t *fpmarr[20]; // contains point data
-
- Bool_t fSwitch3DCluster;
- Bool_t fSwitch3DTracks;
- Bool_t fSwitch3DPadRow;
- Bool_t fSwitch3DGeometry;
-
- ClassDef(AliHLTTPCDisplay,1) //Display class
-};
-
-#endif
+++ /dev/null
-// $Id$
-
-/**
-<pre>
-//_____________________________________________________________
-// AliHLTTPCDisplay3D
-//
-// Display class for the HLT TPC-3D events.
-</pre>
-*/
-// Author: Jochen Thaeder <mailto:thaeder@kip.uni-heidelberg.de>
-//*-- Copyright © ALICE HLT Group
-
-#define TRACKHELIX 0 // use THelix for tracks
-#define TRACKPOLYMARKER 0 // use TPolymarker3D for tracks
-#define FIRSTLASTPOINT 0 // show first / last point of tracks
-#define DEBUG 1
-
-#define DRAWSTEP 0.2
-
-#define UNUSEDCLUSTERCOLOR 2
-#define USEDCLUSTERCOLOR 3
-#define TRACKCOLOR 4
-#define TRACKPOLYMARKERCOLOR 5
-#define TRACKHELIXCOLOR 6
-
-#if defined(HAVE_HOMERREADER)
-#include HOMERREADER_HEADER
-#endif // defined(HAVE_HOMERREADER)
-
-#include "AliHLTTPCDisplay3D.h"
-#include "AliHLTTPCDisplayPadRow.h"
-
-#include "AliHLTStdIncludes.h"
-#ifndef HAVE_NOT_TVIEW3D
-#include <TView3D.h>
-#else
-#include <TView.h>
-#endif
-#include <TPolyMarker3D.h>
-#include <TPolyLine3D.h>
-#include <TH2.h>
-#include <TTree.h>
-#include <TNode.h>
-#include <TGeometry.h>
-#include <TShape.h>
-#include <TParticle.h>
-#include <TFile.h>
-#include <THelix.h>
-#include <TStyle.h>
-#include <TGraph.h>
-#include <TMultiGraph.h>
-#include <TAttText.h>
-#include <TAxis.h>
-#include <TCanvas.h>
-
-#ifdef use_aliroot
-#include <TClonesArray.h>
-#include <AliRun.h>
-#include <AliSimDigits.h>
-#include <AliTPCParam.h>
-#endif
-
-#include "AliHLTTPCDefinitions.h"
-#include "AliHLTDataTypes.h"
-#include "AliHLTTPCSpacePointData.h"
-#include "AliHLTTPCClusterDataFormat.h"
-#include "AliHLTTPCTrackletDataFormat.h"
-
-
-#include "AliHLTTPCDigitReader.h"
-#include "AliHLT_C_Component_WrapperInterface.h"
-
-#include "AliHLTTPCDisplayMain.h"
-
-#include "AliHLTTPCLogging.h"
-#include "AliHLTTPCDisplay.h"
-#include "AliHLTTPCTransform.h"
-#include "AliHLTTPCTrack.h"
-#include "AliHLTTPCTrackArray.h"
-#include "AliHLTTPCMemHandler.h"
-#include "AliHLTTPCDigitReaderPacked.h"
-
-
-#if __GNUC__ >= 3
-using namespace std;
-#endif
-
-ClassImp(AliHLTTPCDisplay3D)
-
-//____________________________________________________________________________________________________
- AliHLTTPCDisplay3D::AliHLTTPCDisplay3D(AliHLTTPCDisplayMain* display, Char_t* gfile ) :
- fTrackParam(),
- fDisplay(display),
- fGeom(NULL) {
- // constructor
-
- LoadGeometrie(gfile);
-}
-
-//____________________________________________________________________________________________________
-AliHLTTPCDisplay3D::~AliHLTTPCDisplay3D() {
- // destructor
-
-}
-
-//____________________________________________________________________________________________________
-void AliHLTTPCDisplay3D::Save(){
- fDisplay->GetCanvas3D()->SaveAs("HLT-3D-View.eps");
-}
-
-//____________________________________________________________________________________________________
-void AliHLTTPCDisplay3D::Draw(){
- fDisplay->GetCanvas3D()->cd();
- fDisplay->GetCanvas3D()->Clear();
-
-#ifndef HAVE_NOT_TVIEW3D
- TView3D *v = new TView3D();
- if (v) v->SetSystem(1);
-#else
- TView *v = new TView(1);
-#endif
- if (v==NULL) {
- HLTFatal("can not create viewer");
- return;
- }
- v->SetRange(-800,-800,-800,800,800,800);
-
- Float_t* etaRange = NULL; // ------ STILL TO FIX
-
-
- //--------------------------------------------------------------------------------------------
- // DRAW 3D GEOMETRY
- //--------------------------------------------------------------------------------------------
- if (fDisplay->Get3DSwitchGeometry()){
-
- TList* masterNodeList = fGeom->GetListOfNodes();
- TNode* masterNode=0;
- TIter next(masterNodeList);
-
- while ((masterNode = static_cast<TNode*> (next()))) {
-
- TList* nodeList = masterNode->GetListOfNodes();
- TNode* node=0;
- TIter nextt(nodeList);
-
- while ((node = static_cast<TNode*> (nextt()))) {
-
- ULong_t tmpslice = atol(node->GetName() + 2);
-
- if (fDisplay->GetDisplaySlice(tmpslice)) {
- node->SetVisibility(1);
- node->SetFillColor(0);
- node->SetLineColor(fDisplay->GetLineColor());
- }
- else node->SetVisibility(0);
- } // end while son Nodes
- } // end while master Node
-
- fGeom->Draw("");
- } // END - DRAW 3D GEOMETRY
-
- //--------------------------------------------------------------------------------------------
- // DRAW 3D PadRow
- //--------------------------------------------------------------------------------------------
-
- if (fDisplay->ExistsRawData() && fDisplay->Get3DSwitchPadRow() && fDisplay->GetDisplaySlice(fDisplay->GetSlicePadRow())){
-
- // -- only one padrow
- if ( fDisplay->Get3DSwitchRaw() == 1 ) {
- fDisplay->GetPadRowPointer()->Draw3D();
- }
- // show all padrows
- else {
- Int_t nRawdata = 0;
- TPolyMarker3D *pmRawdata = new TPolyMarker3D(1,6);
- pmRawdata->SetBit(kCanDelete);
-
- if ( fDisplay->GetZeroSuppression() ){
- for (Int_t row=0; row < AliHLTTPCTransform::GetNRows(); row++){
- for (Int_t pad=0; pad < AliHLTTPCTransform::GetNPads(row); pad++){
- for (Int_t timeBin=fDisplay->GetTimeBinMin(); timeBin <= fDisplay->GetTimeBinMax(); timeBin++){
-
- Int_t time = (Int_t) fDisplay->fRawDataZeroSuppressed[row][pad][timeBin];
-
- if (time != 0) {
- Float_t xyz[3];
-
- AliHLTTPCTransform::RawHLT2Global(xyz,fDisplay->GetSlicePadRow(), row, pad, timeBin);
-
- pmRawdata->SetPoint(nRawdata,xyz[0],xyz[1],xyz[2]);
- nRawdata++;
- }
- } // end time
- } // end pad
- } // end row
- }
-
- pmRawdata->SetMarkerSize(1);
- pmRawdata->SetMarkerColor(6);
- pmRawdata->Draw("same");
-
- } // end show all padrows
-
- }
-
- //--------------------------------------------------------------------------------------------
- // DRAW 3D CLUSTER
- //--------------------------------------------------------------------------------------------
- if (fDisplay->Get3DSwitchCluster() && fDisplay->ExistsClusterData()){
-
- for (Int_t slice=0; slice <= 35; slice++){
-
- Int_t currenttrack = -1;
-
- if (fDisplay->ExistsTrackData() && fDisplay->GetSelectTrackSwitch()) currenttrack = fDisplay->GetGlobalTrack(slice);
-
- if (!fDisplay->GetDisplaySlice(slice)) continue;
-
- for(Int_t patch=0;patch<6;patch++){
-
- AliHLTTPCSpacePointData *points = fDisplay->GetSpacePointDataPointer(slice,patch);
- if(!points) continue;
-
- TPolyMarker3D *pmUsed = new TPolyMarker3D(1,6);
- TPolyMarker3D *pmUnused = new TPolyMarker3D(1,6);
- pmUnused->SetBit(kCanDelete);
- pmUsed->SetBit(kCanDelete);
-
-
- Int_t nUsedCluster = 0;
- Int_t nUnusedCluster = 0;
-
- Float_t xyz[3];
- for(Int_t i=0; i< fDisplay->GetNumberSpacePoints(slice,patch); i++){
- // Used cluster only
- if (fDisplay->GetSelectCluster() == 1 && points[i].fUsed == kFALSE) continue;
- // Unused cluster only
- if (fDisplay->GetSelectCluster() == 2 && points[i].fUsed == kTRUE) continue;
-
- // if single track is selcted draw only cluster for this track
- if (fDisplay->GetSelectCluster() == 1 && fDisplay->GetSelectTrackSwitch() && points[i].fTrackN != currenttrack) continue;
-
- xyz[0] = points[i].fX;
- xyz[1] = points[i].fY;
- xyz[2] = points[i].fZ;
-
- if ( etaRange ){
- // Do this before the transform, because the tracker also uses
- // local coordinates when using this limit to determine
- // which clusters to use for tracking
- Double_t pointEta = AliHLTTPCTransform::GetEta( xyz );
- if ( pointEta<etaRange[0] || pointEta>etaRange[1] )
- continue;
- }
-
- AliHLTTPCTransform::Local2Global(xyz,slice);
-
- if (points[i].fUsed == kTRUE){
- pmUsed->SetPoint(nUsedCluster,xyz[0],xyz[1],xyz[2]);
- nUsedCluster++;
- }
- else {
- pmUnused->SetPoint(nUnusedCluster,xyz[0],xyz[1],xyz[2]);
- nUnusedCluster++;
- }
-
- }
- pmUsed->SetMarkerSize(1);
- pmUsed->SetMarkerColor(USEDCLUSTERCOLOR);
- pmUsed->Draw("same");
-
- pmUnused->SetMarkerSize(1);
- pmUnused->SetMarkerColor(UNUSEDCLUSTERCOLOR);
- pmUnused->Draw("same");
-
- fDisplay->GetCanvas3D()->Modified();
- fDisplay->GetCanvas3D()->Update();
-
- } // END - PATCH LOOP
- } // END - SLICE LOOP
- } // END - DRAW 3D CLUSTER
-
- //--------------------------------------------------------------------------------------------
- // DRAW 3D TRACKS
- //--------------------------------------------------------------------------------------------
- if (fDisplay->Get3DSwitchTracks() && fDisplay->ExistsTrackData()){
-
- AliHLTTPCTransform::SetBField( 0.5 ); // ++++++
-
-
- AliHLTTPCTrackArray* tracks = fDisplay->GetTrackArrayPointer();
- Int_t ntracks = tracks->GetNTracks();
-
- // TPolyLine3D **line = new (TPolyLine3D*)[ntracks];
- // for(Int_t j=0; j<ntracks; j++) line[j] = 0;
-#if TRACKHELIX
- // THelix **helix = new (THelix*)[ntracks];
- // for(Int_t j=0; j<ntracks; j++) helix[j] = 0;
-
-#endif
- for(Int_t j=0; j<ntracks; j++) {
-
- AliHLTTPCTrack *gtrack = tracks->GetCheckedTrack(j);
- if(!gtrack) continue;
-
- Int_t nHits = gtrack->GetNHits(); // Number of associated hits to track
- Int_t slice = gtrack->GetSector();
-
- // --- CHECK if track is should be drawn
- // select if slice should be displayed or not
- if (!fDisplay->GetDisplaySlice(slice)) continue;
-
- if (fDisplay->GetSelectTrackSwitch() && fDisplay->GetGlobalTrack(slice) != j) continue;
-
- Double_t radius = gtrack->GetRadius(); // radius
- Double_t kappa = gtrack->GetKappa(); // curvature = 1/R , signed
- Double_t lambda = atan( gtrack->GetTgl() ); // dipAngle lambda
- Double_t phi0 = gtrack->GetPsi() + (gtrack->GetCharge() * AliHLTTPCTransform::PiHalf() ); // azimuthal angle of startingpoint, with respect to helix axis
-
- if (kappa == 0 && AliHLTTPCTransform::GetBFieldValue() > 0.) {
- printf("================================KAPPA == 0");
- continue;
- }
-
- Double_t xyzL[3]; // lastpoint of track
- Double_t xyzF[3]; // firstpoint of track
-
- xyzF[0] = gtrack->GetFirstPointX();
- xyzF[1] = gtrack->GetFirstPointY();
- xyzF[2] = gtrack->GetFirstPointZ();
-
- xyzL[0] = gtrack->GetLastPointX();
- xyzL[1] = gtrack->GetLastPointY();
- xyzL[2] = gtrack->GetLastPointZ();
-
- if ( xyzL[0] == xyzF[0] ) continue;
- if ( xyzL[1] == xyzF[1] ) continue;
- if ( xyzL[2] == xyzF[2] ) continue;
-
-
-#if FIRSTLASTPOINT
- TPolyMarker3D *pmL = new TPolyMarker3D(1,2);
- TPolyMarker3D *pmF = new TPolyMarker3D(1,2);
- pmL->SetBit(kCanDelete);
- pmF->SetBit(kCanDelete);
-
- //TPolyMarker3D pmL(1,2);
- //TPolyMarker3D pmF(1,2);
-
-
- pmF->SetPoint(0,xyzF[0],xyzF[1],xyzF[2]);
- pmL->SetPoint(0,xyzL[0],xyzL[1],xyzL[2]);
-#endif
-
- Double_t s = 0.; // length of the track
-
-
- //if ( AliHLTTPCTransform::GetBFieldValue() == 0.)
- if ( radius == 999999.0){ // IVAN HACK
-
- s = sqrt ( (xyzL[0] - xyzF[0])*(xyzL[0] - xyzF[0]) + (xyzL[1] - xyzF[1])*(xyzL[1] - xyzF[1]) );
- }
- else {
- // Calculate the length of the track. If it is to flat in in s,z plane use sxy, otherwise use sz
- if (fabs(lambda) > 0.05){
- // length of track calculated out of z
- s = fabs( (xyzL[2] - xyzF[2]) / sin(lambda) ); // length of track calculated out of z
- }
- else {
- Double_t d = (xyzL[0] - xyzF[0])*(xyzL[0] - xyzF[0]) + (xyzL[1] - xyzF[1])*(xyzL[1] - xyzF[1]);
- // length of track calculated out of xy
- s = fabs ( acos( 0.5 * (2 - (d / (radius*radius)))) / ( kappa * cos(lambda) ) );
- }
- }
-
-
- // CUTS on tracks
-/*
- if (nHits < fDisplay->GetCutHits() ) continue;
- if (s < fDisplay->GetCutS() ) continue;
- if (gtrack->GetPsi() < fDisplay->GetCutPsi() ) continue;
- if (lambda < fDisplay->GetCutLambda() ) continue;
- if (gtrack->GetPt() < fDisplay->GetCutPt() && AliHLTTPCTransform::GetBFieldValue() != 0. ) continue;
- if ( AliHLTTPCTransform::GetPadRow((Float_t)xyzF[0]) > fDisplay->GetIncidentPadrow() ) continue;
-*/
- Int_t nTrackPoints = 2 + (Int_t) floor(s / DRAWSTEP);
-
-#if TRACKPOLYMARKER
- // TPolyMarker3D *pmT = new TPolyMarker3D(nTrackPoints,6);
- TPolyMarker3D pmT(nTrackPoints,6);
-
-#endif
- Double_t *xT = new Double_t[nTrackPoints];
- Double_t *yT = new Double_t[nTrackPoints];
- Double_t *zT = new Double_t[nTrackPoints];
-
- Int_t trackPointCounter = 0;
-
- //Write Track Parameters for single track
- if (fDisplay->GetSelectTrackSwitch() ){
- fDisplay->fTrackParam.id = j;
- fDisplay->fTrackParam.nHits = nHits;
- fDisplay->fTrackParam.charge = gtrack->GetCharge();
- fDisplay->fTrackParam.lambda = lambda;
- fDisplay->fTrackParam.kappa = kappa;
- fDisplay->fTrackParam.radius = radius;
- fDisplay->fTrackParam.slice = slice;
- fDisplay->fTrackParam.phi0 = phi0;
- fDisplay->fTrackParam.pt = gtrack->GetPt();
- fDisplay->fTrackParam.bfield = AliHLTTPCTransform::GetBFieldValue();
- fDisplay->fTrackParam.psi = gtrack->GetPsi();
- fDisplay->fTrackParam.s = s;
- }
-
-
- // if ( AliHLTTPCTransform::GetBFieldValue() == 0.) {
-
- if ( radius == 999999.0) { // IVAN HACK
-
- // cout << "ENTER IVAN 2 radius="<< radius << endl;
- for (Double_t ds = 0.; ds < s; ds = ds + DRAWSTEP){
- // FILL ARRAYS IN ORDER TO DRAW THE TRACKPOINTS, OUT OF THE PARAMETER
- // xT[trackPointCounter] = xyzF[0] + ds * cos(phi0);
- // yT[trackPointCounter] = xyzF[1] + ds * sin(phi0);
- xT[trackPointCounter] = xyzF[0] + ds * cos(phi0 - 1.57);
- yT[trackPointCounter] = xyzF[1] + ds * sin(phi0 - 1.57);
- zT[trackPointCounter] = xyzF[2] + ds * sin(lambda);
-#if TRACKPOLYMARKER
- pmT.SetPoint(trackPointCounter,xT[trackPointCounter],yT[trackPointCounter],zT[trackPointCounter]);
-#endif
- trackPointCounter++;
- }
-
- if (trackPointCounter > nTrackPoints) printf("N=%d n=%d", nTrackPoints,trackPointCounter);
- else {
- //xT[trackPointCounter] = xyzF[0] + s * cos(phi0);
- //yT[trackPointCounter] = xyzF[1] + s * sin(phi0);
-
- xT[trackPointCounter] = xyzF[0] + s * cos(phi0 - 1.57);
- yT[trackPointCounter] = xyzF[1] + s * sin(phi0 - 1.57);
- zT[trackPointCounter] = xyzF[2] + s * sin(lambda);
-#if TRACKPOLYMARKER
- pmT.SetPoint(trackPointCounter,xT[trackPointCounter],yT[trackPointCounter],zT[trackPointCounter]);
-#endif
- }
-
- }
- else {
-
- for (Double_t ds = 0.; ds < s; ds = ds + DRAWSTEP){
- // FILL ARRAYS IN ORDER TO DRAW THE TRACKPOINTS, OUT OF THE PARAMETER
- xT[trackPointCounter] = xyzF[0] + radius * ( cos( phi0 + (ds*kappa*cos(lambda)) ) - cos(phi0) );
- yT[trackPointCounter] = xyzF[1] + radius * ( sin( phi0 + (ds*kappa*cos(lambda)) ) - sin(phi0) );
- zT[trackPointCounter] = xyzF[2] + ds * sin(lambda);
-#if TRACKPOLYMARKER
- pmT.SetPoint(trackPointCounter,xT[trackPointCounter],yT[trackPointCounter],zT[trackPointCounter]);
-#endif
- trackPointCounter++;
- }
-
- if (trackPointCounter > nTrackPoints) printf("N=%d n=%d", nTrackPoints,trackPointCounter);
- else {
- xT[trackPointCounter] = xyzF[0] + radius * ( cos( phi0 + (s*kappa*cos(lambda)) ) - cos(phi0) );
- yT[trackPointCounter] = xyzF[1] + radius * ( sin( phi0 + (s*kappa*cos(lambda)) ) - sin(phi0) );
- zT[trackPointCounter] = xyzF[2] + s * sin(lambda);
-#if TRACKPOLYMARKER
- pmT.SetPoint(trackPointCounter,xT[trackPointCounter],yT[trackPointCounter],zT[trackPointCounter]);
-#endif
- }
- }
-
- // Draw Track -- as line
- //line[j] = new TPolyLine3D(nTrackPoints,xT,yT,zT,"");
- //TPolyLine3D *currentline = line[j];
- //* currentline = new TPolyLine3D(nTrackPoints,xT,yT,zT,"");
- // TPolyLine3D currentline(nTrackPoints,xT,yT,zT,"");
-
- TPolyLine3D *currentline = new TPolyLine3D(nTrackPoints,xT,yT,zT,"");
- currentline->SetBit(kCanDelete);
- currentline->SetLineColor(TRACKCOLOR);
- currentline->SetLineWidth(2);
- currentline->Draw("same");
-
-
-
- // --- ADDITIONAL DRAW OPTIONS
-#if FIRSTLASTPOINT
- // Draw last point of Track
- pmL->SetMarkerSize(3);
- pmL->SetMarkerColor(4);
- pmL->Draw();
-
- // Draw first point of Track
- pmF->SetMarkerSize(3);
- pmF->SetMarkerColor(5);
- pmF->Draw();
-#endif
-#if TRACKPOLYMARKER
- // Draw Track -- as polymarker
- pmT.SetMarkerSize(3);
- pmT.SetMarkerColor(TRACKPOLYMARKERCOLOR);
- pmT.Draw();
-#endif
-#if TRACKHELIX
- // Draw Track -- as helix
- // works ok, execpt for very small dipangles -> track almost horizontal
- Double_t hrange[2];
- Double_t v0[3];
- Double_t omega;
- hrange[0] = xyzF[2];
- hrange[1] = xyzL[2];
- v0[0] = gtrack->GetPx();
- v0[1] = gtrack->GetPy();
- v0[2] = gtrack->GetPz();
- omega = AliHLTTPCTransform::GetBFieldValue() * gtrack->GetCharge();
-
- // helix[j] = new THelix(xyzF,v0,omega,hrange,kHelixZ,0);
- // THelix *currenthelix = helix[j];
- // currenthelix = new THelix(xyzF,v0,omega,hrange,kHelixZ,0);
- THelix currenthelix(xyzF,v0,omega,hrange,kHelixZ,0);
- currenthelix.SetLineColor(TRACKHELIXCOLOR);
- currenthelix.SetLineWidth(1);
- currenthelix.Draw("same");
-#endif
-
-
- // delete[]
- //Double_t *xT = new Double_t[nTrackPoints];
- // Double_t *yT = new Double_t[nTrackPoints];
- // Double_t *zT = new Double_t[nTrackPoints];
- if (xT){
- delete[] xT;
- xT = NULL;
- }
- if (yT){
- delete[] yT;
- yT = NULL;
- }
- if (zT){
- delete[] zT;
- zT = NULL;
- }
-
- } // END for track loop
-
-
- // NO !!! DELETE line #ifdef helix delete helix
-
-
- } // END - DRAW 3D Tracks
-
- //--------------------------------------------------------------------------------------------
- // DRAW 3D
- //--------------------------------------------------------------------------------------------
- // v->ZoomView(0,3);
- // v->Draw();
-
- fDisplay->GetCanvas3D()->SetFillColor(fDisplay->GetBackColor());
-
- if ( !fDisplay->GetKeepView() ){
- fDisplay->GetCanvas3D()->SetTheta(fDisplay->GetTheta());
- fDisplay->GetCanvas3D()->SetPhi(fDisplay->GetPhi());
- }
-
- // fDisplay->GetCanvas3D()->Modified();
-
- fDisplay->GetCanvas3D()->Update();
-
-}
-
-//____________________________________________________________________________________________________
-void AliHLTTPCDisplay3D::LoadGeometrie(Char_t *gfile) {
- if (gfile) {
- TFile *file = TFile::Open(gfile);
- if(!file) {
- LOG(AliHLTTPCLog::kError,"AliHLTTPCDisplay3D::AliHLTDisplay","File Open")
- <<"Geometry file " << gfile << " does not exist!"<<ENDLOG;
- exit(-1);
- }
-
- fGeom = (TGeometry*)file->Get("AliceGeom");
-
- file->Close();
- }
-}
+++ /dev/null
-// XEmacs -*-C++-*-
-// $Id$
-
-#ifndef ALIHLTTPCDISPLAY3D_H
-#define ALIHLTTPCDISPLAY3D_H
-/** \class AliHLTTPCDisplay3D
-<pre>
-//_____________________________________________________________
-// AliHLTTPCDisplay3D
-//
-// Display class for the HLT TPC-3D events.
-</pre>
-*/
-// Author: Jochen Thaeder <mailto:thaeder@kip.uni-heidelberg.de>
-//*-- Copyright © ALICE HLT Group
-
-#include <TCanvas.h>
-#include <TH1.h>
-#include <TH2F.h>
-#include <AliHLTTPCDisplayMain.h>
-
-class AliHLTTPCDisplay3D : public AliHLTLogging {
-
- public:
- AliHLTTPCDisplay3D(AliHLTTPCDisplayMain* display, Char_t *gfile ) ;
- virtual ~AliHLTTPCDisplay3D();
-
- void Draw();
- void Save();
-
- struct AliHLTTPCTrackParameter{
- Int_t nHits;
- Int_t charge;
- Double_t kappa;
- Double_t radius;
- Double_t xyzF[3];
- Double_t xyzL[3];
- Int_t slice;
- Double_t phi0;
- Double_t psi;
- Double_t lambda;
- Double_t pt;
- Int_t id;
- Double_t bfield;
- Double_t s;
- };
-
- AliHLTTPCTrackParameter fTrackParam;
-
-// ---------------------------------------------------
- private:
- AliHLTTPCDisplay3D (const AliHLTTPCDisplay3D&);
- AliHLTTPCDisplay3D& operator=(const AliHLTTPCDisplay3D&);
-
-
- void LoadGeometrie(Char_t *gfile);
-
- AliHLTTPCDisplayMain* fDisplay;
-
- TGeometry *fGeom; // Geometry
-
- ClassDef(AliHLTTPCDisplay3D,0)
-};
-
-#endif // ALIHLTTPCDISPLAY3D_H
+++ /dev/null
-// $Id$
-
-/**
-<pre>
-//_____________________________________________________________
-// AliHLTTPCDisplayCharge
-//
-// Display class for the HLT TPC-Charge events.
-</pre>
-*/
-// Author: Jochen Thaeder <mailto:thaeder@kip.uni-heidelberg.de>
-//*-- Copyright © ALICE HLT Group
-
-#include <TH2.h>
-#include <TFile.h>
-#include <TStyle.h>
-#include <TAttText.h>
-#include <TAxis.h>
-#include <TCanvas.h>
-
-#ifdef use_aliroot
-#include <TClonesArray.h>
-#include <AliRun.h>
-#include <AliSimDigits.h>
-#include <AliTPCParam.h>
-#endif
-
-#include "AliHLTStdIncludes.h"
-#include "AliHLTTPCDefinitions.h"
-#include "AliHLTDataTypes.h"
-#include "AliHLTTPCSpacePointData.h"
-#include "AliHLTTPCClusterDataFormat.h"
-#include "AliHLTTPCLogging.h"
-#include "AliHLTTPCTransform.h"
-#include "AliHLTTPCDigitReaderPacked.h"
-#include "AliHLTTPCTrack.h"
-#include "AliHLTTPCTrackArray.h"
-
-#include "AliHLTTPCDisplayMain.h"
-#include "AliHLTTPCDisplayCharge.h"
-
-#if __GNUC__ >= 3
-using namespace std;
-#endif
-
-ClassImp(AliHLTTPCDisplayCharge)
-
-//____________________________________________________________________________________________________
- AliHLTTPCDisplayCharge::AliHLTTPCDisplayCharge(AliHLTTPCDisplayMain* display) :
- fDisplay(display),
- fHistcharge(NULL),
- fMaxCharge(0),
- fTmpEvent(0) {
- // constructor
-
- fBinX[0] = 0;
- fBinX[1] = 1;
-
- fHistcharge = new TH1F ("fHistcharge","Cluster distribution per charge;charge;#cluster",5000,0,30000);
- fHistcharge->SetTitleSize(0.03);
- fHistcharge->GetXaxis()->SetLabelSize(0.03);
- fHistcharge->GetXaxis()->SetTitleSize(0.03);
- fHistcharge->GetYaxis()->SetLabelSize(0.03);
- fHistcharge->GetYaxis()->SetTitleSize(0.03);
-}
-
-//____________________________________________________________________________________________________
-AliHLTTPCDisplayCharge::~AliHLTTPCDisplayCharge() {
- // destructor
- if ( fHistcharge){
- delete fHistcharge;
- fHistcharge = NULL;
- }
-}
-
-//____________________________________________________________________________________________________
-void AliHLTTPCDisplayCharge::Reset(){
- fHistcharge->Reset();
-}
-
-//____________________________________________________________________________________________________
-void AliHLTTPCDisplayCharge::Save(){
- fDisplay->GetCanvasCharge()->SaveAs("HLT-ChargeView.eps");
-}
-
-//____________________________________________________________________________________________________
-void AliHLTTPCDisplayCharge::Fill(){
- // Fill Charge Histogram
-
- Int_t maxCharge = 0;
-
- for (Int_t slice=0; slice <= 35; slice++){
-
- Int_t currenttrack = -1;
-
- if (fDisplay->ExistsTrackData() && fDisplay->GetSelectTrackSwitch()) currenttrack = fDisplay->GetGlobalTrack(slice);
-
- if (!fDisplay->GetDisplaySlice(slice)) continue;
-
- for(Int_t patch=0;patch<6;patch++){
-
- AliHLTTPCSpacePointData *points = fDisplay->GetSpacePointDataPointer(slice,patch);
- if(!points) continue;
-
- for(Int_t i=0; i< fDisplay->GetNumberSpacePoints(slice,patch); i++){
- // Used cluster only
- if (fDisplay->GetSelectCluster() == 1 && points[i].fUsed == kFALSE) continue;
- // Unused cluster only
- if (fDisplay->GetSelectCluster() == 2 && points[i].fUsed == kTRUE) continue;
-
- // if single track is selcted draw only cluster for this track
- if (fDisplay->GetSelectCluster() == 1 && fDisplay->GetSelectTrackSwitch() && points[i].fTrackN != currenttrack) continue;
-
- // Fill Charge Histogram
- fHistcharge->Fill(points[i].fCharge);
- if ((Int_t)points[i].fCharge > maxCharge ) maxCharge = (Int_t) points[i].fCharge;
- }
-
- } // END - PATCH LOOP
- } // END - SLICE LOOP
-
- fMaxCharge = maxCharge;
-}
-
-//____________________________________________________________________________________________________
-void AliHLTTPCDisplayCharge::Draw(){
- fDisplay->GetCanvasCharge()->cd();
- fDisplay->GetCanvasCharge()->Clear();
-
- // Keep Zoom
- if (!fDisplay->GetKeepView() || (fBinX[1]>fMaxCharge)){
- fBinX[0] = 0;
- fBinX[1] = fMaxCharge;
- }
-
- fHistcharge->SetAxisRange(fBinX[0],fBinX[1]);
-
- fHistcharge->SetStats(kFALSE);
- fHistcharge->Draw();
-
- fDisplay->GetCanvasCharge()->Modified();
- fDisplay->GetCanvasCharge()->Update();
-
- // Keep Zoom
- fDisplay->GetCanvasCharge()->Connect("ProcessedEvent(Int_t,Int_t,Int_t,TObject*)","AliHLTTPCDisplayCharge",(void*) this,"ExecEvent(Int_t,Int_t,Int_t,TObject*)");
-}
-
-//____________________________________________________________________________________________________
-void AliHLTTPCDisplayCharge::ExecEvent(Int_t event, Int_t /*px*/, Int_t /*py*/, TObject *selected){
- // Saves the Zoom Position of the Histogram
-
- // - Mouse down on Axis : StartPoint of Range
- if (event == 1 && selected->InheritsFrom("TAxis"))
- fTmpEvent = 1;
-
- // - Mouse pressed on Axis : Real Zoom process not only click
- else if (event == 21 && selected->InheritsFrom("TAxis") && fTmpEvent == 1)
- fTmpEvent = 21;
-
- // - Mouse pressed on Axis : Still pressed
- else if (event == 21 && selected->InheritsFrom("TAxis") && fTmpEvent == 21)
- return;
-
- // - Mouse up on Axis : End Point of Rangex
- else if (event == 11 && selected->InheritsFrom("TAxis") && fTmpEvent == 21){
- TAxis * axis = (TAxis*) selected;
-
- if (selected == fHistcharge->GetXaxis() ){
- fBinX[0] = axis->GetFirst() -1;
- fBinX[1] = axis->GetLast() -1;
- }
-
- fTmpEvent = 0;
- }
- else fTmpEvent = 0;
-}
+++ /dev/null
-// XEmacs -*-C++-*-
-// $Id$
-
-#ifndef ALIHLTTPCDISPLAYCHARGE_H
-#define ALIHLTTPCDISPLAYCHARGE_H
-/** \class AliHLTTPCDisplayCharge
-<pre>
-//_____________________________________________________________
-// AliHLTTPCDisplayCharge
-//
-// Display class for the HLT TPC-Charge events.
-</pre>
-*/
-// Author: Jochen Thaeder <mailto:thaeder@kip.uni-heidelberg.de>
-//*-- Copyright © ALICE HLT Group
-
-#include <TCanvas.h>
-#include <TH1.h>
-#include <AliHLTTPCDisplayMain.h>
-
-class AliHLTTPCDisplayCharge : public AliHLTLogging {
-
- public:
- AliHLTTPCDisplayCharge(AliHLTTPCDisplayMain* display) ;
- virtual ~AliHLTTPCDisplayCharge();
-
- void Fill();
- void Draw();
- void Reset();
- void Save();
- void ExecEvent(Int_t event, Int_t x, Int_t y, TObject *selected);
-
- private:
- AliHLTTPCDisplayCharge (const AliHLTTPCDisplayCharge&);
- AliHLTTPCDisplayCharge& operator=(const AliHLTTPCDisplayCharge&);
-
- AliHLTTPCDisplayMain* fDisplay;
-
- TH1F *fHistcharge; // histogram for clustercharge
-
- Int_t fMaxCharge; // Maximum of Charge
- Int_t fBinX[2]; // Minimum / Maximum - Bin on X Axis
- Int_t fTmpEvent; // Tmp Event for get user range on Axis
-
- ClassDef(AliHLTTPCDisplayCharge,0)
-};
-
-#endif // ALIHLTTPCDISPLAYCHARGE_H
+++ /dev/null
-// $Id$
-
-/**
-<pre>
-//_____________________________________________________________
-// AliHLTTPCDisplayFront
-//
-// Display class for the HLT TPC-Pad events.
-</pre>
-*/
-// Author: Jochen Thaeder <mailto:thaeder@kip.uni-heidelberg.de>
-//*-- Copyright © ALICE HLT Group
-
-#include <TH2.h>
-#include <TFile.h>
-#include <TStyle.h>
-#include <TAttText.h>
-#include <TAxis.h>
-#include <TCanvas.h>
-
-#ifdef use_aliroot
-#include <TClonesArray.h>
-#include <AliRun.h>
-#include <AliSimDigits.h>
-#include <AliTPCParam.h>
-#endif
-
-#include "AliHLTStdIncludes.h"
-#include "AliHLTTPCDefinitions.h"
-#include "AliHLTDataTypes.h"
-#include "AliHLTTPCSpacePointData.h"
-#include "AliHLTTPCClusterDataFormat.h"
-#include "AliHLTTPCLogging.h"
-#include "AliHLTTPCTransform.h"
-
-#include "AliHLTTPCDisplayMain.h"
-#include "AliHLTTPCDisplayFront.h"
-#include "AliHLTTPCDisplayPad.h"
-#if __GNUC__ >= 3
-using namespace std;
-#endif
-
-#define TESTCODE 0
-
-ClassImp(AliHLTTPCDisplayFront)
-
-//____________________________________________________________________________________________________
- AliHLTTPCDisplayFront::AliHLTTPCDisplayFront(AliHLTTPCDisplayMain* display) :
- fDisplay(display),
- fCanvas(NULL),
- fHistfront(NULL),
- fHistfrontcl(NULL),
- fNTimes( display->GetNTimeBins() ),
- fBinX(),
- fBinY(),
- fTmpEvent(0) {
- // constructor
-
- fBinY[0] = 0;
- fBinY[1] = AliHLTTPCTransform::GetNRows() - 1;
-
-#if TESTCODE
- fBinX[0] = (-4) * AliHLTTPCTransform::GetNPads(fBinY[1]);
- fBinX[1] = (4) * AliHLTTPCTransform::GetNPads(fBinY[1]);
- Int_t Bins = (8 * AliHLTTPCTransform::GetNPads(fBinY[1]) ) + 1;
-#else
- fBinX[0] = 0;
- fBinX[1] = AliHLTTPCTransform::GetNPads(fBinY[1]);
-#endif
-
- // Int_t fBinningFaktor = 4 ;
-
-#if TESTCODE
- fHistfront = new TH2F("fHistfront","FrontView of selected slice;Pad #;Padrow #",Bins,fBinX[0],fBinX[1],fBinY[1]+1,fBinY[0],fBinY[1]);
-#else
- fHistfront = new TH2F("fHistfront","FrontView of selected slice;Pad #;Padrow #",fBinX[1]+1,fBinX[0],fBinX[1],fBinY[1]+1,fBinY[0],fBinY[1]);
- fHistfrontcl = new TH1F("fHistfrontcl","cvcv;ddd;kkk",fBinX[1]+1,fBinX[0],fBinX[1]);
- gStyle->SetPalette(1);
-#endif
-
- fHistfront->SetOption("COLZ");
- fHistfront->SetTitleSize(0.03);
- fHistfront->GetXaxis()->SetLabelSize(0.03);
- fHistfront->GetXaxis()->SetTitleSize(0.03);
- fHistfront->GetYaxis()->SetLabelSize(0.03);
- fHistfront->GetYaxis()->SetTitleSize(0.03);
-}
-
-//____________________________________________________________________________________________________
-AliHLTTPCDisplayFront::~AliHLTTPCDisplayFront() {
- // destructor
- if ( fHistfront ){
- delete fHistfront;
- fHistfront = NULL;
- }
-}
-
-//____________________________________________________________________________________________________
-void AliHLTTPCDisplayFront::Reset(){
- fHistfront->Reset();
-}
-
-//____________________________________________________________________________________________________
-void AliHLTTPCDisplayFront::Save(){
- fCanvas->SaveAs("HLT-FrontView.eps");
-}
-
-//____________________________________________________________________________________________________
-void AliHLTTPCDisplayFront::Fill() {
- // Fill Pad Histogram
-
- Int_t timeSwitch = fDisplay->GetFrontDataSwitch();
-
- // --- TEST CODE beginn
- // Int_t fBinning = 8; // == 1/0.125
- // Int_t fBinningFaktor = 4; // binning / 2 because of width half
-
-#if TESTCODE
- // use sum
- if (timeSwitch == 0) {
- for (Int_t row=0; row < AliHLTTPCTransform::GetNRows(); row++){
-
- Int_t width_half = AliHLTTPCTransform::GetNPads(row) * AliHLTTPCTransform::GetPadLength(row) * fBinningFaktor;
- Int_t pad_corrected_loop = (Int_t) ( AliHLTTPCTransform::GetPadLength(row) *fBinning );
-
- for (Int_t pad=0; pad < AliHLTTPCTransform::GetNPads(row); pad++){
-
- Int_t pad_corrected = ( pad * AliHLTTPCTransform::GetPadLength(row) * fBinning ) - width_half;
-
- UInt_t timeSum = 0;
- for (Int_t timeBin=fDisplay->GetTimeBinMin(); timeBin <= fDisplay->GetTimeBinMax(); timeBin++){
- timeSum += fDisplay->fRawData[row][pad][timeBin];
- } // end time
- for (Int_t ii=0;ii < pad_corrected_loop; ii++){
- pad_corrected++;
- fHistfront->Fill(pad_corrected,row,(Int_t) timeSum);
- }
- } // end pad
- } // end row
- } // end use sum
-
- return;
- // --- TEST CODE end
-#endif
-
- // !!
- // !! DO unrolling because of cache effects (avoid cache trashing) !!
- // !!
-
- if ( fDisplay->GetZeroSuppression() ){
- // use sum
- if (timeSwitch == 0) {
- for (Int_t row=0; row < AliHLTTPCTransform::GetNRows(); row++){
- for (Int_t pad=0; pad < AliHLTTPCTransform::GetNPads(row); pad++){
- UInt_t timeSum = 0;
- for (Int_t timeBin=fDisplay->GetTimeBinMin(); timeBin <= fDisplay->GetTimeBinMax(); timeBin++){
- timeSum += fDisplay->fRawDataZeroSuppressed[row][pad][timeBin];
- } // end time
-
- fHistfront->Fill(pad,row,(Int_t) timeSum);
- } // end pad
- } // end row
- } // end use sum
-
- // use average
- else if (timeSwitch == 1){
- for (Int_t row=0; row < AliHLTTPCTransform::GetNRows(); row++){
- for (Int_t pad=0; pad < AliHLTTPCTransform::GetNPads(row); pad++){
- UInt_t timeSum = 0;
- Int_t NTimeBins = 0;
- Float_t timeAverage = 0.;
- for (Int_t timeBin=fDisplay->GetTimeBinMin(); timeBin <= fDisplay->GetTimeBinMax(); timeBin++){
- timeSum += fDisplay->fRawDataZeroSuppressed[row][pad][timeBin];
- NTimeBins++;
- } // end time
-
- if (NTimeBins <= 0)
- HLTFatal("Division by Zero - NTimeBins == 0");
- else
- timeAverage = ((Float_t) timeSum) / ((Float_t) NTimeBins);
-
- fHistfront->Fill(pad,row, timeAverage);
- } // end pad
- } // end row
- }// end use average
-
- // use maximum
- else if (timeSwitch == 2){
- for (Int_t row=0; row < AliHLTTPCTransform::GetNRows(); row++){
- for (Int_t pad=0; pad < AliHLTTPCTransform::GetNPads(row); pad++){
- UInt_t timeMax = 0;
- for (Int_t timeBin=fDisplay->GetTimeBinMin(); timeBin <= fDisplay->GetTimeBinMax(); timeBin++){
- UInt_t tmp = fDisplay->fRawDataZeroSuppressed[row][pad][timeBin];
- if (tmp > timeMax) timeMax = tmp;
- } // end time
-
- fHistfront->Fill(pad,row,(Int_t) timeMax);
- } // end pad
- } // end row
- }// end use maximum
- } // end - if ( fDisplay->GetZeroSuppression() ){
-
- else {
- // use sum
- if (timeSwitch == 0) {
- for (Int_t row=0; row < AliHLTTPCTransform::GetNRows(); row++){
- for (Int_t pad=0; pad < AliHLTTPCTransform::GetNPads(row); pad++){
- UInt_t timeSum = 0;
- for (Int_t timeBin=fDisplay->GetTimeBinMin(); timeBin <= fDisplay->GetTimeBinMax(); timeBin++){
- timeSum += fDisplay->fRawData[row][pad][timeBin];
- } // end time
-
- fHistfront->Fill(pad,row,(Int_t) timeSum);
- } // end pad
- } // end row
- } // end use sum
-
- // use average
- else if (timeSwitch == 1){
- for (Int_t row=0; row < AliHLTTPCTransform::GetNRows(); row++){
- for (Int_t pad=0; pad < AliHLTTPCTransform::GetNPads(row); pad++){
- UInt_t timeSum = 0;
- Int_t NTimeBins = 0;
- Float_t timeAverage = 0.;
- for (Int_t timeBin=fDisplay->GetTimeBinMin(); timeBin <= fDisplay->GetTimeBinMax(); timeBin++){
- timeSum += fDisplay->fRawData[row][pad][timeBin];
- NTimeBins++;
- } // end time
-
- if (NTimeBins <= 0)
- HLTFatal("Division by Zero - NTimeBins == 0");
- else
- timeAverage = ((Float_t) timeSum) / ((Float_t) NTimeBins);
-
- fHistfront->Fill(pad,row, timeAverage);
- } // end pad
- } // end row
- }// end use average
-
- // use maximum
- else if (timeSwitch == 2){
- for (Int_t row=0; row < AliHLTTPCTransform::GetNRows(); row++){
- for (Int_t pad=0; pad < AliHLTTPCTransform::GetNPads(row); pad++){
- UInt_t timeMax = 0;
- for (Int_t timeBin=fDisplay->GetTimeBinMin(); timeBin <= fDisplay->GetTimeBinMax(); timeBin++){
- UInt_t tmp = fDisplay->fRawData[row][pad][timeBin];
- if (tmp > timeMax) timeMax = tmp;
- } // end time
-
- fHistfront->Fill(pad,row,(Int_t) timeMax);
- } // end pad
- } // end row
- }// end use maximum
- } // end - else of if ( fDisplay->GetZeroSuppression() ){
-
-
-#if 0
- if (fDisplay->ExistsClusterData()){
- for (Int_t patch=0; patch < 6; patch++){
- AliHLTTPCSpacePointData *points = fDisplay->GetSpacePointDataPointer(fDisplay->GetSlicePadRow(),patch);
- if(!points) return;
-
- cout << "fill" << patch << endl;
-
- Float_t xyz[3];
- for(Int_t i=0; i< fDisplay->GetNumberSpacePoints(fDisplay->GetSlicePadRow(),patch); i++){
- xyz[0] = points[i].fX;
- xyz[1] = points[i].fY;
- xyz[2] = points[i].fZ;
- Int_t padRow = AliHLTTPCTransform::GetPadRow(xyz[0]);
-
-
- // select padrow to fill in histogramm
- // if (padRow == AliHLTTPCTransform::GetPadRow(xyz[0])){
- AliHLTTPCTransform::LocHLT2Raw(xyz, 0, padRow);
- fHistfrontcl->Fill(xyz[1],padRow);
- // }
- }
- }
- } // END if (fDisplay->ExistsClusterData()){
-#endif
-
-}
-
-//____________________________________________________________________________________________________
-void AliHLTTPCDisplayFront::Draw(){
-
- fDisplay->GetCanvasFront()->cd();
- fDisplay->GetCanvasFront()->Clear();
-
- if (fDisplay->GetSplitFront()){
- fDisplay->GetCanvasFront()->Divide(1,2);
- fDisplay->GetCanvasFront()->cd(1);
- }
-
- Char_t title[256];
- sprintf(title,"FrontView of selected slice%d",fDisplay->GetSlicePadRow());
-
- // Keep Zoom
- if (!fDisplay->GetKeepView() ){
- fBinY[0] = 0;
- fBinY[1] = AliHLTTPCTransform::GetNRows() - 1;
- fBinX[0] = 0;
- fBinX[1] = AliHLTTPCTransform::GetNPads(fBinY[1]);
- }
-
- fHistfront->SetAxisRange(fBinX[0],fBinX[1]);
- fHistfront->SetAxisRange(fBinY[0],fBinY[1],"Y");
-
- fHistfront->SetTitle(title);
- fHistfront->SetStats(kFALSE);
- fHistfront->Draw("COLZ");
-
- if ( fDisplay->ExistsClusterData() ){
- fHistfrontcl->SetAxisRange(fBinX[0],fBinX[1]);
- fHistfrontcl->SetAxisRange(fBinY[0],fBinY[1],"Y");
- fHistfrontcl->SetStats(kFALSE);
- fHistfrontcl->SetMarkerStyle(28);
- fHistfrontcl->SetMarkerSize(2);
- fHistfrontcl->SetMarkerColor(1);
- fHistfrontcl->Draw("psame");
- }
-
- if (fDisplay->GetSplitFront()){
- fDisplay->GetCanvasFront()->cd(2);
- fDisplay->GetPadPointer()->fHistpad2->Draw();
- }
-
- fDisplay->GetCanvasFront()->Modified();
- fDisplay->GetCanvasFront()->Update();
-
- // Select Pad
- fDisplay->GetCanvasFront()->Connect("ProcessedEvent(Int_t,Int_t,Int_t,TObject*)","AliHLTTPCDisplayMain",(void*) fDisplay,"ExecPadEvent(Int_t,Int_t,Int_t,TObject*)");
- // Keep Zoom
- fDisplay->GetCanvasFront()->Connect("ProcessedEvent(Int_t,Int_t,Int_t,TObject*)","AliHLTTPCDisplayFront",(void*) this,"ExecEvent(Int_t,Int_t,Int_t,TObject*)");
-}
-
-//____________________________________________________________________________________________________
-void AliHLTTPCDisplayFront::ExecEvent(Int_t event, Int_t/*px*/, Int_t /*py*/, TObject *selected){
- // Saves the Zoom Position of the Histogram
-
- // - Mouse down on Axis : StartPoint of Range
- if (event == 1 && selected->InheritsFrom("TAxis"))
- fTmpEvent = 1;
-
- // - Mouse pressed on Axis : Real Zoom process not only click
- else if (event == 21 && selected->InheritsFrom("TAxis") && fTmpEvent == 1)
- fTmpEvent = 21;
-
- // - Mouse pressed on Axis : Still pressed
- else if (event == 21 && selected->InheritsFrom("TAxis") && fTmpEvent == 21)
- return;
-
- // - Mouse up on Axis : End Point of Rangex
- else if (event == 11 && selected->InheritsFrom("TAxis") && fTmpEvent == 21){
- TAxis * axis = (TAxis*) selected;
-
- if (selected == fHistfront->GetXaxis() || selected == fHistfront->GetXaxis()){
- fBinX[0] = axis->GetFirst() -1;
- fBinX[1] = axis->GetLast() -1;
- }
- else {
- fBinY[0] = axis->GetFirst() -1;
- fBinY[1] = axis->GetLast() -1;
- }
-
- fTmpEvent = 0;
- }
- else fTmpEvent = 0;
-}
+++ /dev/null
-// XEmacs -*-C++-*-
-// $Id$
-
-#ifndef ALIHLTTPCDISPLAYFRONT_H
-#define ALIHLTTPCDISPLAYFRONT_H
-/** \class AliHLTTPCDisplayFront
-<pre>
-//_____________________________________________________________
-// AliHLTTPCDisplayFront
-//
-// Display class for the HLT TPC-Front view
-</pre>
-*/
-// Author: Jochen Thaeder <mailto:thaeder@kip.uni-heidelberg.de>
-//*-- Copyright © ALICE HLT Group
-
-#include <TCanvas.h>
-#include <TH1F.h>
-#include <TH2F.h>
-#include <AliHLTTPCDisplayMain.h>
-
-class AliHLTTPCDisplayFront : public AliHLTLogging {
-
-public:
- AliHLTTPCDisplayFront(AliHLTTPCDisplayMain* display) ;
- virtual ~AliHLTTPCDisplayFront();
-
-
- void Fill();
- void Draw();
- void Reset();
- void Save();
- void ExecEvent(Int_t event, Int_t x, Int_t y, TObject *selected);
-
-private:
- AliHLTTPCDisplayFront (const AliHLTTPCDisplayFront&);
- AliHLTTPCDisplayFront& operator=(const AliHLTTPCDisplayFront&);
-
- AliHLTTPCDisplayMain* fDisplay;
- TCanvas * fCanvas;
-
- TH2F *fHistfront; // histogram for front view of one slice
- TH1F *fHistfrontcl; // histogram for cluster in front
- Int_t fNTimes;
-
- Int_t fBinX[2]; // Minimum / Maximum - Bin on X Axis
- Int_t fBinY[2]; // Minimum / Maximum - Bin on Y Axis
- Int_t fTmpEvent; // Tmp Event for get user range on Axis
-
- ClassDef(AliHLTTPCDisplayFront,0)
-};
-
-#endif // ALIHLTTPCDISPLAYFRONT_H
+++ /dev/null
-/**************************************************************************
- * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- * *
- * Authors: Jochen Thaeder <thaeder@kip.uni-heidelberg.de> *
- * for The ALICE Off-line Project. *
- * *
- * Permission to use, copy, modify and distribute this software and its *
- * documentation strictly for non-commercial purposes is hereby granted *
- * without fee, provided that the above copyright notice appears in all *
- * copies and that both the copyright notice and this permission notice *
- * appear in the supporting documentation. The authors make no claims *
- * about the suitability of this software for any purpose. It is *
- * provided "as is" without express or implied warranty. *
- **************************************************************************/
-
-/** @file AliHLTTPCDisplayMain.cxx
- @author Jochen Thaeder
- @date
- @brief Interface class for ALICE HLT online Display
-*/
-
-
-#if defined(HAVE_HOMERREADER)
-#include HOMERREADER_HEADER
-#endif // defined(HAVE_HOMERREADER)
-//-----------
-#include "AliHLTTPCDisplayMain.h"
-#include "AliHLTTPCDisplayCharge.h"
-#include "AliHLTTPCDisplayPadRow.h"
-#include "AliHLTTPCDisplayPad.h"
-#include "AliHLTTPCDisplay3D.h"
-#include "AliHLTTPCDisplayResiduals.h"
-#include "AliHLTTPCDisplayFront.h"
-//-----------
-#include "AliHLTStdIncludes.h"
-#include "AliHLTTPCDefinitions.h"
-#include "AliHLTDataTypes.h"
-#include "AliHLTTPCSpacePointData.h"
-#include "AliHLTTPCClusterDataFormat.h"
-#include "AliHLTTPCTrackletDataFormat.h"
-#include "AliHLTTPCDigitReader.h"
-#include "AliHLTTPCDigitReaderDecoder.h"
-#include "AliHLTTPCPad.h"
-#include "AliHLT_C_Component_WrapperInterface.h"
-#include "AliHLTTPCLogging.h"
-
-#include "AliHLTTPCTransform.h"
-#include "AliHLTTPCTrack.h"
-#include "AliHLTTPCTrackArray.h"
-#include "AliHLTTPCMemHandler.h"
-#include "AliHLTTPCDigitReaderPacked.h"
-
-#ifdef use_aliroot
-#include <TClonesArray.h>
-#include <AliRun.h>
-#include <AliSimDigits.h>
-#include <AliTPCParam.h>
-#endif
-
-#if __GNUC__ >= 3
-using namespace std;
-#endif
-
-// -- input datatypes , reverse
-const Char_t* spptID = "SRETSULC"; // CLUSTERS
-const Char_t* trksegID = "SGESKART"; // TRAKSEGS
-const Char_t* trkID = " SKCART"; // TRACKS
-const Char_t* padrowID = "KPWR_LDD"; // DDL_RWPK
-
-ClassImp(AliHLTTPCDisplayMain)
-
-//____________________________________________________________________________________________________
- AliHLTTPCDisplayMain::AliHLTTPCDisplayMain(void* pt2GUI, void (*pt2Function)(void*, Int_t)) :
- fPt2Gui(pt2GUI),
- fPadCallback(pt2Function),
- fReader(NULL),
- fTrackParam(),
- fCanvasArray(NULL),
- fWorkerArray(NULL),
- fgNTimeBins(1024), // 446 or 1024
- fRawReaderMode(0),
- fZeroSuppressionThreshold (10),
- fOccupancyLimit(1.0),
- fBField(0.4),
- fNTimeBins(1024),
- fEventID(0),
- fConnect(kFALSE),
- fExistsRawData(kFALSE),
- fExistsClusterData(kFALSE),
- fExistsTrackData(kFALSE),
- fDisplayCharge(NULL),
- fDisplayPadRow(NULL),
- fDisplayPad(NULL),
- fDisplay3D(NULL),
- fDisplayResiduals(NULL),
- fDisplayFront(NULL),
- fCanvasCharge(NULL),
- fCanvasPadRow(NULL),
- fCanvasPad(NULL),
- fCanvas3D(NULL),
- fCanvasResiduals(NULL),
- fCanvasFront(NULL),
- fCanvasHits_S(NULL),
- fCanvasQ_Track(NULL),
- fCanvasQ_S(NULL),
- fCanvasPadRow_Pad(NULL),
- fTracksPerSlice(),
- fClusters(),
- fTracks(NULL),
- fNcl(),
- fMinSlice(0),
- fMaxSlice(35),
- fSlicePair(kFALSE),
- fSliceArray(),
- fSelectCluster(),
- fZeroSuppression( kTRUE ),
- fPad(-1),
- fNPads( AliHLTTPCTransform::GetNPads(0) ),
- fPadRow(0),
- fSlicePadRow(0),
- fSplitPadRow(kFALSE),
- fFrontDataSwitch(2),
- fTimeBinMin(0),
- fTimeBinMax(1024),
- fSplitFront(kFALSE),
- fSelectTrackSwitch(kFALSE),
- fSelectTrack(-1),
- fSelectTrackSlice(0),
- fCutHits(0),
- fCutPt(0.),
- fCutPsi(0.),
- fCutLambda(0.),
- fCut_S(0.),
- fCutPadrow(159),
- fKeepView(kTRUE),
- fTheta(90.),
- fPhi(0.),
- fBackColor(1),
- fLineColor(0),
- fSwitch3DCluster(kFALSE),
- fSwitch3DTracks(kFALSE),
- fSwitch3DPadRow(kFALSE),
- fSwitch3DGeometry(kTRUE),
- fSwitch3DRaw(0) {
- //constructor
-
- AliHLTLogging::SetGlobalLoggingLevel(kHLTLogError);
-
- fCanvasArray = new TCanvas* [nCanvasTypes];
- fWorkerArray = new void* [nWorkerTypes];
-
- memset(fClusters,0,36*6*sizeof(AliHLTTPCSpacePointData*));
- memset(fNcl, 0, 36*6*sizeof(UInt_t));
-
- fTracks = NULL;
-
- fTimeBinMax = GetNTimeBins() -1;
-
- SetSliceArray();
-
- fTrackParam.kappa = 0.;
- fTrackParam.nHits = 0;
- fTrackParam.charge = 0;
- fTrackParam.radius = 0.;
- fTrackParam.slice = 0;
- fTrackParam.phi0 = 0.;
- fTrackParam.psi = 0.;
- fTrackParam.lambda = 0.;
- fTrackParam.pt = 0.;
- fTrackParam.id = 0;
- fTrackParam.bfield = 0.;
- fTrackParam.s = 0.;
-}
-
-//____________________________________________________________________________________________________
-AliHLTTPCDisplayMain::~AliHLTTPCDisplayMain() {
- //destructor
- if ( fTracks ) delete fTracks;
- fTracks = NULL;
-
- if ( fCanvasArray ) delete fTracks;
- fTracks = NULL;
-
- if ( fWorkerArray ) delete fWorkerArray;
- fWorkerArray = NULL;
-
-#if defined(HAVE_HOMERREADER)
- HOMERReader* reader= (HOMERReader*) fReader;
-
- if (reader)
- delete reader;
- fReader = NULL;
-#endif // defined(HAVE_HOMERREADER)
-
- if (fDisplayResiduals)
- delete fDisplayResiduals;
- fDisplayResiduals = NULL;
-
- if (fDisplay3D)
- delete fDisplay3D;
- fDisplay3D = NULL;
-
- if (fDisplayPad)
- delete fDisplayPad;
- fDisplayPad = NULL;
-
- if (fDisplayPadRow)
- delete fDisplayPadRow;
- fDisplayPadRow = NULL;
-
- if (fDisplayFront)
- delete fDisplayFront;
- fDisplayFront = NULL;
-
- if (fDisplayCharge)
- delete fDisplayCharge;
- fDisplayCharge = NULL;
-}
-
-#if defined(DEFAULT_GEOMETRY)
-extern const char* gDefaultGeometry;
-#endif
-
-//____________________________________________________________________________________________________
-Int_t AliHLTTPCDisplayMain::Connect( unsigned int cnt, const char** hostnames, unsigned short* ports, Char_t *gfile){
-
- Char_t* defaultGeometry=NULL;
-#if defined(DEFAULT_GEOMETRY)
- defaultGeometry=const_cast<Char_t*>(gDefaultGeometry);
-#endif
- if (gfile!=NULL) {
- HLTDebug("probing geometry file %s", gfile);
- ifstream test(gfile);
- if (test.fail()) {
- HLTWarning("unable to find geometry file %s, using default file", gfile);
- gfile=defaultGeometry;
- }
- test.close();
- } else {
- HLTDebug("using default geometry file %s", defaultGeometry);
- gfile=defaultGeometry;
- }
- if (gfile==NULL) {
- HLTError("geometry file missing");
- return -EINVAL;
- }
-#if defined(HAVE_HOMERREADER)
-
- Int_t ret;
-
- while(1) {
-
- // -- CONNECT to TCPDumpSubscriber via HOMER
- // ---------------------------------------------
- HOMERReader* reader = new HOMERReader( cnt, (const char**) hostnames, ports );
- ret=reader->GetConnectionStatus();
-
- if ( ret ) {
- Int_t ndx = reader->GetErrorConnectionNdx();
- if ( ndx < (Int_t) cnt) HLTError("Error establishing connection to TCP source %s:%hu: %s (%d)\n", hostnames[ndx], ports[ndx], strerror(ret), ret );
- else HLTError("Error establishing connection to unknown source with index %d: %s (%d)\n",ndx, strerror(ret), ret );
-
- delete reader;
- reader = NULL;
- return -1;
- }
-
- // -- ERROR HANDLING for HOMER (error codes and empty blocks)
- // --------------------------------------------------------------
- Int_t ret1 = reader->ReadNextEvent(3000000); // timeout in microseconds (3s)
-
- if ( ret1 ) {
- Int_t ndx = reader->GetErrorConnectionNdx();
-
- if ( ret1 == 111 || ret1 == 32 ) {
- HLTError( "Error, No Connection to source %d: %s (%d)\n", ndx, strerror(ret1), ret1 );
-
- delete reader;
- reader = NULL;
-
- return -1;
- }
- else if (ret1 == 110){
- HLTError( "Timout occured, reading event from source %d: %s (%d)\n", ndx, strerror(ret1), ret1 );
-
- delete reader;
- reader = NULL;
-
- return -2;
- }
- else if ( ret1 == 56 || ret1 == 6 ) {
- HLTError( "Error reading event from source %d: %s (%d) -- RETRY\n", ndx, strerror(ret1), ret1 );
-
- delete reader;
- reader = NULL;
-
- continue;
- }
- else {
- HLTError( "General Error reading event from source %d: %s (%d)\n", ndx, strerror(ret1), ret1 );
-
- delete reader;
- reader = NULL;
-
- return -3;
- }
- }
-
- unsigned long blockCnt = reader->GetBlockCnt();
-
- HLTDebug( "Event 0x%016LX (%Lu) with %lu blocks\n", (ULong64_t)reader->GetEventID(), (ULong64_t)reader->GetEventID(), blockCnt );
-
- if (blockCnt == 0){
- delete reader;
- reader = NULL;
- continue;
- }
-
- // SWITCH on the Display parts according what DATATAYPES are present
- // ---------------------------------------------------------------------
- for ( unsigned long i = 0; i < blockCnt; i++ ) {
- char tmp1[9];
- memset( tmp1, 0, 9 );
- void *tmp11 = tmp1;
- ULong64_t* tmp12 = (ULong64_t*)tmp11;
- *tmp12 = reader->GetBlockDataType( i );
-
- if (!strcmp(tmp1,padrowID)) fExistsRawData = kTRUE;
- else if (!strcmp(tmp1,spptID)) fExistsClusterData = kTRUE;
- else if (!strcmp(tmp1,trksegID)) fExistsTrackData = kTRUE;
- else if (!strcmp(tmp1,trkID)) fExistsTrackData = kTRUE;
- }
-
- // -- Set reader and eventID
- // -------------------------------
- fEventID = (ULong64_t)reader->GetEventID();
- fReader = (void*) reader;
- fConnect = kTRUE;
-
- break; // leave while(1), if connected to source
- }
-
-
- // -- Initialize TPC Display Classes -- IMPORTANT... don't change the order of them
- // Check if necessary data types are present
- // ------------------------------------------------------------------------------------
- fDisplay3D = new AliHLTTPCDisplay3D(this, gfile);
-
- if (ExistsRawData()){
- fDisplayPadRow = new AliHLTTPCDisplayPadRow(this);
- fDisplayPad = new AliHLTTPCDisplayPad(this);
- fDisplayFront = new AliHLTTPCDisplayFront(this);
- }
-
- if (ExistsClusterData()){
- fDisplayCharge = new AliHLTTPCDisplayCharge(this);
- }
-
- if (ExistsTrackData() && ExistsClusterData() ){
- fDisplayResiduals = new AliHLTTPCDisplayResiduals(this);
- }
-
-
-
-#else
- HLTFatal("HOMER reader not available");
- cnt = 0; // in order to get rid of compiler warnings
- hostnames = NULL; // in order to get rid of compiler warnings
- ports = NULL; // in order to get rid of compiler warnings
-#endif // defined(HAVE_HOMERREADER)
-
- return 0;
-}
-
-//____________________________________________________________________________________________________
-Int_t AliHLTTPCDisplayMain::Disconnect(){
-#if defined(HAVE_HOMERREADER)
- // READ CLUSTER and TRACK data
- HOMERReader* reader = (HOMERReader*)fReader;
-
- if (reader)
- delete reader;
- fReader = NULL;
-
-#else
- HLTFatal("HOMER raeder not available");
-#endif // defined(HAVE_HOMERREADER)
-
- return 0;
-}
-
-
-//____________________________________________________________________________________________________
-Int_t AliHLTTPCDisplayMain::ReadData(Bool_t nextSwitch){
-// READ CLUSTER and TRACK data
-
-#if defined(HAVE_HOMERREADER)
- HOMERReader* reader = (HOMERReader*)fReader;
-
- // -- reset TracksPerSlice Array
- for(Int_t ii=0;ii<36;ii++) fTracksPerSlice[ii] = 0;
-
- Int_t ret;
- ULong_t blk;
-
- // -- READ next event data and ERROR HANDLING for HOMER (error codes and empty blocks)
- // ---------------------------------------------------------------------------------------
- if (nextSwitch) {
-
- while(1){
- ret = reader->ReadNextEvent();
-
- if ( ret == 111 || ret == 32 || ret == 6 ) {
- Int_t ndx = reader->GetErrorConnectionNdx();
- HLTError( "Error, No Connection to source %d: %s (%d)\n", ndx, strerror(ret), ret );
- return -1;
- }
- else if ( ret == 110 ) {
- Int_t ndx = reader->GetErrorConnectionNdx();
- HLTError( "Timout occured, reading event from source %d: %s (%d)\n", ndx, strerror(ret), ret );
- return -2;
- }
- else if ( ret == 56) {
- Int_t ndx = reader->GetErrorConnectionNdx();
- HLTError( "Error reading event from source %d: %s (%d) -- RETRY\n", ndx, strerror(ret), ret );
- continue;
- }
- else if ( ret ) {
- Int_t ndx = reader->GetErrorConnectionNdx();
- HLTError( "General Error reading event from source %d: %s (%d)\n", ndx, strerror(ret), ret );
- return -3;
- }
- else {
- break;
- }
- }
- } // end if (nextSwitch)
-
- // -- Get blockCnt and eventID
- // -------------------------------
- ULong_t blockCnt = reader->GetBlockCnt();
- fEventID = (ULong64_t)reader->GetEventID();
-
- HLTError( "Event 0x%016LX (%Lu) with %lu blocks\n", (ULong64_t)reader->GetEventID(), (ULong64_t)reader->GetEventID(), blockCnt );
-
- // Loop for Debug only
- for ( ULong_t i = 0; i < blockCnt; i++ ) {
- Char_t tmp1[9], tmp2[5];
- memset( tmp1, 0, 9 );
- memset( tmp2, 0, 5 );
- void *tmp11 = tmp1;
- ULong64_t* tmp12 = (ULong64_t*)tmp11;
- *tmp12 = reader->GetBlockDataType( i );
- void *tmp21 = tmp2;
- ULong_t* tmp22 = (ULong_t*)tmp21;
- *tmp22 = reader->GetBlockDataOrigin( i );
-
- HLTError( "Block %lu length: %lu - type: %s - origin: %s\n",i, reader->GetBlockDataLength( i ), tmp1, tmp2 );
- } // end for ( ULong_t i = 0; i < blockCnt; i++ ) {
-
-
- // -- READ RAW DATA
- //---------------------
- ReadRawData();
-
- // -- READ CLUSTER DATA
- //-------------------------
- ReadClusterData();
-
- // -- READ TRACKS
- //-------------------
- ReadTrackData();
-
-#else
- HLTFatal("HOMER raeder not available");
- nextSwitch = kFALSE;// in order to get rid of compiler warnings
-#endif // defined(HAVE_HOMERREADER)
-
- return 0;
-}
-
-//____________________________________________________________________________________________________
-void AliHLTTPCDisplayMain::DisplayEvent(Bool_t newRawSlice){
-#if defined(HAVE_HOMERREADER)
- HOMERReader* reader = (HOMERReader*)fReader;
-
- //--------------------------------------------------------------------------------------------
- // READ RAW DATA for PADROW/PAD HISTOGRAM
- //--------------------------------------------------------------------------------------------
- if ( ExistsRawData() ){
- fDisplayPadRow->Reset();
- fDisplayPad->Reset();
- fDisplayFront->Reset();
-
- if (newRawSlice) ReadRawData();
-
-
- fDisplayPad->Fill();
- fDisplayPadRow->Fill();
- fDisplayFront->Fill();
-
-
- fDisplayPad->Draw();
- fDisplayPadRow->Draw();
- fDisplayFront->Draw();
- }
-
- //--------------------------------------------------------------------------------------------
- // DRAW RESIDUALS
- //--------------------------------------------------------------------------------------------
- if ( ExistsClusterData() && ExistsTrackData() ){
- fDisplayResiduals->Reset();
- fDisplayResiduals->Fill();
- fDisplayResiduals->Draw();
- }
-
- //--------------------------------------------------------------------------------------------
- // DRAW CHARGE
- //--------------------------------------------------------------------------------------------
- if ( ExistsClusterData() ){
- fDisplayCharge->Reset();
- fDisplayCharge->Fill();
- fDisplayCharge->Draw();
- }
-
- //--------------------------------------------------------------------------------------------
- // DRAW 3D
- //--------------------------------------------------------------------------------------------
-
- // TAKE CARE !!! EXISTSxxxData() HANDLING of 3D will be done IN this class !!!
- fDisplay3D->Draw();
-
- cout << "afterdraw" << endl;
-#else
- HLTFatal("HOMER raeder not available");
- newRawSlice = kFALSE;// in order to get rid of compiler warnings
-#endif // defined(HAVE_HOMERREADER)
-
-}
-
-//____________________________________________________________________________________________________
-void AliHLTTPCDisplayMain::SaveHistograms(){
- // Save histograms as eps
- fDisplayCharge->Save();
- fDisplayPadRow->Save();
- fDisplayPad->Save();
- fDisplay3D->Save();
- fDisplayResiduals->Save();
- fDisplayFront->Save();
- fDisplayCharge->Save();
-}
-
-//----------------------------------------------------------------------------------------------------
-// READ DATA
-//____________________________________________________________________________________________________
-//____________________________________________________________________________________________________
-void AliHLTTPCDisplayMain::ReadRawData(){
- // -- READ raw data of one sector into 3D arrays fRawData and fRawDataZeroSuppressed
-
- // -- reset arrays
- memset(fRawData, 0, 159*140*1024*sizeof(UInt_t));
- memset(fRawDataZeroSuppressed, 0, 159*140*1024*sizeof(UInt_t));
-
-#if defined(HAVE_HOMERREADER)
- HOMERReader* reader = (HOMERReader*)fReader;
-
- // -- read raw data blocks
- // ---------------------------
- ULong_t blk;
- Char_t* rawID = "KPWR_LDD";
- blk = reader->FindBlockNdx( rawID, " CPT",0xFFFFFFFF );
-
- while ( blk != ~(ULong_t)0 ) {
- HLTDebug( "Found raw data block %lu\n", blk );
-
-#if HOMER_VERSION >= 2
- // -- Check for corrupt data
- AliHLTUInt64_t corruptFlag = reader->GetBlockStatusFlags( blk );
- if (corruptFlag & 0x00000001) {
- HLTError( "Data block %lu is corrupt\n",blk );
- blk = reader->FindBlockNdx( rawID, " CPT", 0xFFFFFFFF, blk+1 );
- continue;
- }
-#endif
-
- void* rawDataBlock = (void*) reader->GetBlockData( blk );
- unsigned long rawDataLen = reader->GetBlockDataLength( blk );
-
- ULong_t spec = reader->GetBlockDataSpec( blk );
- Int_t patch = AliHLTTPCDefinitions::GetMinPatchNr( spec );
- Int_t slice = AliHLTTPCDefinitions::GetMinSliceNr( spec );
-
- HLTDebug( "Raw data found for slice %u - patch %u\n", slice, patch );
-
- // -- Wrong slice for raw data
- if ( GetSlicePadRow() != slice) {
- blk = reader->FindBlockNdx( rawID, " CPT", 0xFFFFFFFF, blk+1 );
- continue;
- }
-
- // -- Read data out of block
- AliHLTTPCDigitReaderDecoder digitReader;
-
- // Initialize RAW DATA
- Int_t firstRow = AliHLTTPCTransform::GetFirstRow(patch);
- Int_t lastRow = AliHLTTPCTransform::GetLastRow(patch);
-
- // Outer sector, patches 2, 3, 4, 5 - start counting in patch 2 with row 0
- Int_t rowOffset = 0;
- if ( patch >= 2 ) rowOffset = AliHLTTPCTransform::GetFirstRow( 2 );
-
- // Initialize block for reading packed data
- digitReader.InitBlock(rawDataBlock,rawDataLen,patch,slice);
-
- Bool_t readValue = digitReader.Next();
-
- if (!readValue){
- HLTError ( "No value in data block %lu \n", blk);
- blk = reader->FindBlockNdx( rawID, " CPT", 0xFFFFFFFF, blk+1 );
- continue;
- }
-
- // -- Fill Zero Suppressed Array
- // ---------------------------------
-
- Int_t newRow = 0;
- UShort_t time=0,newTime=0;
- UInt_t pad=0,newPad=0;
- Int_t signal=0;
-
- Int_t gatingGridOffset=50;
- Int_t signalThreshold = GetZeroSuppressionThreshold();
- AliHLTTPCPad baseline(gatingGridOffset, GetNTimeBins() );
-
- // just to make later conversion to a list of objects easier
- AliHLTTPCPad* pCurrentPad=NULL;
- if ( signalThreshold >= 0) {
- pCurrentPad=&baseline;
- baseline.SetThreshold(signalThreshold);
- }
-
- while ( readValue ) { // Reads through all digits in block
-
- while(1){ //Loop over time bins of current pad
- // read all the values for one pad at once to calculate the base line
- if (pCurrentPad) {
-
- if (!pCurrentPad->IsStarted()) {
-
- // HLTDebug("reading data for pad %d, padrow %d", digitReader.GetPad(), digitReader.GetRow()+rowOffset);
-
- pCurrentPad->SetID(digitReader.GetRow()+rowOffset,digitReader.GetPad());
-
- if ( (pCurrentPad->StartEvent()) >= 0) {
- // loop over data of one pad and read it into AliHLTTPCPad class
- do {
- if ( (digitReader.GetRow()+rowOffset) != pCurrentPad->GetRowNumber() ) break;
- if ( digitReader.GetPad() != pCurrentPad->GetPadNumber() ) break;
- pCurrentPad->SetRawData( digitReader.GetTime(), digitReader.GetSignal() );
-
- // HLTDebug("set raw data to pad: bin %d charge %d", digitReader.GetTime(), digitReader.GetSignal());
-
- } while ( (readValue = digitReader.Next()) != 0 );
- }
-
- // calculate baseline of pad
- pCurrentPad->CalculateBaseLine( GetNTimeBins() / 2);
-
- if ( pCurrentPad->Next(kTRUE/*do zero suppression*/) == 0 ) {
- // HLTDebug("no data available after zero suppression");
-
- pCurrentPad->StopEvent();
- pCurrentPad->ResetHistory();
- break;
- }
-
- Int_t time = pCurrentPad->GetCurrentPosition();
- if ( time > pCurrentPad->GetSize() ) {
- HLTError("invalid time bin for pad");
- break;
- }
- } // end - if (!pCurrentPad->IsStarted()) {
- } // end - if (pCurrentPad) {
-
- if (pCurrentPad) {
- Float_t occupancy=pCurrentPad->GetOccupancy();
- if ( occupancy < GetOccupancyLimit() ) {
- signal = pCurrentPad->GetCorrectedData();
- }
- else {
- signal = 0;
- HLTInfo("ignoring pad %d with occupancy level %f %%", pCurrentPad->GetPadNumber(), occupancy);
- }
- // signal = pCurrentPad->GetCorrectedData();
- } else {
- signal = digitReader.GetSignal();
- }
-
- fRawDataZeroSuppressed[ pCurrentPad->GetRowNumber() ][ pCurrentPad->GetPadNumber() ][ pCurrentPad->GetCurrentPosition() ] = (UInt_t)signal;
-
-
- HLTDebug("get next charge value: position %d charge %d", time, signal);
-
- if( time >= AliHLTTPCTransform::GetNTimeBins() ){
- HLTWarning("Timebin (%d) out of range (%d)", time, AliHLTTPCTransform::GetNTimeBins());
- break;
- }
-
- if (pCurrentPad) {
-
- if( (pCurrentPad->Next(kTRUE/*do zero suppression*/)) == 0 ) {
- pCurrentPad->StopEvent();
- pCurrentPad->ResetHistory();
-
- if(readValue) {
- newPad = digitReader.GetPad();
- newTime = digitReader.GetTime();
- newRow = digitReader.GetRow() + rowOffset;
- }
- break;
- }
-
- newPad=pCurrentPad->GetPadNumber();
- newTime=pCurrentPad->GetCurrentPosition();
- newRow=pCurrentPad->GetRowNumber();
- }
- else {
-
- readValue = digitReader.Next();
-
- //Check where to stop:
- if(!readValue) break; //No more value
-
- newPad = digitReader.GetPad();
- newTime = digitReader.GetTime();
- newRow = digitReader.GetRow() + rowOffset;
- }
-
- if(newPad != pad) break; //new pad
- if(newTime != time+1) break; //end of sequence
-
- time = newTime;
-
- } // end - while(1){ // Loop over time bins of current pad
-
- if ( !readValue ) break;
-
- } // end while ( readValue ) {
-
- // -- END ZERO SUPPRESSION
-
- // Rewind block for reading packed data
- digitReader.InitBlock(rawDataBlock,rawDataLen,patch,slice);
-
- // -- Fill Raw Array
- // ---------------------
- readValue = digitReader.Next();
-
- // LOOP over raw data and fill arrays
- while ( readValue ){
-
- Int_t row = digitReader.GetRow() + rowOffset;
- Int_t pad = (Int_t) digitReader.GetPad();
- Int_t time = (Int_t) digitReader.GetTime();
- UInt_t signal = (UInt_t) digitReader.GetSignal();
-
- fRawData[row][pad][time] = signal;
-
- // -- read next value
- readValue = digitReader.Next();
-
- // -- No more value
- if(!readValue) break;
-
- } // end while ( readValue ){
-
- blk = reader->FindBlockNdx( rawID, " CPT", 0xFFFFFFFF, blk+1 );
-
- } // end while ( blk != ~(ULong_t)0 ) {
-
-#else
- HLTFatal("HOMER raeder not available");
-#endif // defined(HAVE_HOMERREADER)
-
-}
-
-//____________________________________________________________________________________________________
-void AliHLTTPCDisplayMain::ReadClusterData(){
- // -- READ cluster data
-#if defined(HAVE_HOMERREADER)
- HOMERReader* reader = (HOMERReader*)fReader;
-
- ULong_t blk;
- blk = reader->FindBlockNdx( (char*)spptID, " CPT",0xFFFFFFFF );
-
- while ( blk != ~(ULong_t)0 ) {
- HLTDebug( "Found clusters block %lu\n", blk );
-
- const AliHLTTPCClusterData* clusterData = (const AliHLTTPCClusterData*)reader->GetBlockData( blk );
- if ( !clusterData ) {
- HLTError( "No track data for block %lu\n", blk );
- blk = reader->FindBlockNdx( (char*)spptID, " CPT", 0xFFFFFFFF, blk+1 );
- continue;
- }
-
- ULong_t spec = reader->GetBlockDataSpec( blk );
- Int_t patch = AliHLTTPCDefinitions::GetMinPatchNr( spec );
- Int_t slice = AliHLTTPCDefinitions::GetMinSliceNr( spec );
-
- HLTDebug( "%lu Clusters found for slice %u - patch %u\n", clusterData->fSpacePointCnt, slice, patch );
-
- void* tmp30 = (void*)clusterData;
- Byte_t* tmp31 = (Byte_t*)tmp30;
- ULong_t offset;
- offset = sizeof(clusterData->fSpacePointCnt);
- if ( offset <= reader->GetBlockTypeAlignment( blk, 1 ) ) offset = reader->GetBlockTypeAlignment( blk, 1 );
- tmp31 += offset;
- tmp30 = tmp31;
- AliHLTTPCSpacePointData* tmp32 = (AliHLTTPCSpacePointData*)tmp30;
-
- SetupCluster( slice, patch, clusterData->fSpacePointCnt, tmp32 );
-
- blk = reader->FindBlockNdx( (char*)spptID, " CPT", 0xFFFFFFFF, blk+1 );
- }
-
-#else
- HLTFatal("HOMER raeder not available");
-#endif // defined(HAVE_HOMERREADER)
-}
-//____________________________________________________________________________________________________
-void AliHLTTPCDisplayMain::ReadTrackData(){
- // -- READ track data
-
- if ( fTracks ) delete fTracks;
- fTracks = new AliHLTTPCTrackArray;
-
-#if defined(HAVE_HOMERREADER)
- HOMERReader* reader = (HOMERReader*)fReader;
-
- ULong_t blk=~(ULong_t)0;
- const Char_t* searchIDs[]={trksegID, trkID, NULL};
- const Char_t** currentID=searchIDs;
- do {
- blk = reader->FindBlockNdx( (char*)*currentID, " CPT", 0xFFFFFFFF );
- } while (blk==~(ULong_t)0 && *(++currentID)!=NULL);
-
- while ( blk != ~(ULong_t)0 || (*currentID!=NULL && *(++currentID)!=NULL )) {
- if (blk == ~(ULong_t)0) {
- blk = reader->FindBlockNdx( (char*)*currentID, " CPT", 0xFFFFFFFF );
- continue;
- }
-
- HLTDebug( "Found tracks in block %lu type %s\n", blk, *currentID );
-
- const AliHLTTPCTrackletData* trackData = (const AliHLTTPCTrackletData*)reader->GetBlockData( blk );
-
- if ( !trackData ) {
- HLTError( "No track data for block %lu\n", blk );
- blk = reader->FindBlockNdx( (char*)*currentID, " CPT", 0xFFFFFFFF, blk+1 );
- continue;
- }
-
- ULong_t spec = reader->GetBlockDataSpec( blk );
- Int_t slice = AliHLTTPCDefinitions::GetMinSliceNr( spec );
- Int_t patchmin = AliHLTTPCDefinitions::GetMinPatchNr( spec );
- Int_t patchmax = AliHLTTPCDefinitions::GetMaxPatchNr( spec );
-
- HLTDebug( "%lu tracks found for slice %u - patch %u-%u\n", trackData->fTrackletCnt, slice, patchmin, patchmax );
-
- fTracksPerSlice[slice] = trackData->fTrackletCnt; // Fill number if tracks per slice
-
- AliHLTTPCTrackSegmentData* tmp42 = (AliHLTTPCTrackSegmentData*) &(trackData->fTracklets[0]);
- fTracks->FillTracks( trackData->fTrackletCnt, tmp42, slice, (*currentID==trksegID?1:0) );
-
- blk = reader->FindBlockNdx( (char*)*currentID, " CPT", 0xFFFFFFFF, blk+1 );
- }
-
- SetupTracks();
-
-#else
- HLTFatal("HOMER raeder not available");
-#endif // defined(HAVE_HOMERREADER)
-}
-
-//----------------------------------------------------------------------------------------------------
-// SETUP
-//____________________________________________________________________________________________________
-void AliHLTTPCDisplayMain::SetupCluster(Int_t slice, Int_t patch, UInt_t nofClusters, AliHLTTPCSpacePointData* data) {
-
- if (data && slice>=0 && slice<36 && patch>=0 && patch<AliHLTTPCTransform::GetNPatches()) {
- if (fClusters[slice][patch]!=NULL) {
- delete(fClusters[slice][patch]);
- fClusters[slice][patch]=NULL;
- }
- Int_t arraysize=nofClusters*sizeof(AliHLTTPCSpacePointData);
- fClusters[slice][patch] = (AliHLTTPCSpacePointData*)new Byte_t[arraysize];
- if (fClusters[slice][patch]) {
- memcpy(fClusters[slice][patch], data, arraysize);
- fNcl[slice][patch]=nofClusters;
- } else {
- fNcl[slice][patch]=nofClusters;
- HLTError ( "Memory allocation failed!" );
- }
- } else HLTError ( "Invalid argument!" );
-}
-
-//____________________________________________________________________________________________________
-void AliHLTTPCDisplayMain::SetupTracks() {
-
- // Set USED cluster
- Int_t ntracks = fTracks->GetNTracks();
-
- for(Int_t j=0; j<ntracks; j++) {
- AliHLTTPCTrack *gtrack = fTracks->GetCheckedTrack(j);
- if(!gtrack) continue;
-
- Int_t nHits = gtrack->GetNHits();
- UInt_t *hitnum = gtrack->GetHitNumbers();
-
- for(Int_t h=0; h<nHits; h++){
-
- UInt_t id=hitnum[h];
- Int_t slice = (id>>25) & 0x7f;
- Int_t patch = (id>>22) & 0x7;
- UInt_t pos = id&0x3fffff;
-
- AliHLTTPCSpacePointData *points = fClusters[slice][patch];
-
- if(!points) {
- HLTError ( "No points at slice %d patch %d position %d!", slice, patch, pos );
- continue;
- }
-
- if(pos>=fNcl[slice][patch]) {
- HLTError ( "Pos is too large: pos %d ncl!", pos,fNcl[slice][patch] );
- continue;
- }
- points[pos].fUsed = kTRUE;
- points[pos].fTrackN = j;
- }
- }
-}
-
-// xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-// xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-// xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-// xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-// xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-// xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-// xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-// xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-// xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-// xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-// xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-// xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-
-
-//----------------------------------------------------------------------------------------------------
-// SETTER
-//____________________________________________________________________________________________________
-
-//____________________________________________________________________________________________________
-void AliHLTTPCDisplayMain::SetSliceArray() {
- Int_t slice=0;
- Int_t minSlice = fMinSlice;
- Int_t maxSlice = fMaxSlice;
- Int_t realslice = 0;
-
- for (slice=0;slice< 36;slice++){
- fSliceArray[slice] = kFALSE;
- }
-
- // Single Slice, or Range
- if (minSlice > maxSlice) maxSlice += 17;
-
- for (slice=minSlice;slice<=maxSlice;slice++){
- realslice = slice % 18;
- fSliceArray[realslice] = kTRUE;
- fSliceArray[realslice+18] = kTRUE;
- }
-
- // Pair of Slices
- if (fSlicePair) {
- minSlice = fMinSlice + 9;
- maxSlice = fMaxSlice + 9;
-
- if (minSlice > maxSlice) maxSlice += 17;
-
- for (slice=minSlice;slice<=maxSlice;slice++){
- realslice = slice % 18;
- fSliceArray[realslice] = kTRUE;
- fSliceArray[realslice+18] = kTRUE;
- }
- }
-}
-
-
-//----------------------------------------------------------------------------------------------------
-// GETTER
-//____________________________________________________________________________________________________
-Int_t AliHLTTPCDisplayMain::GetGlobalTrack(Int_t slice){
- // get global track out of the "selectTrack" parameters
- Int_t currenttrack= -1;
- Int_t trackcounter = 0;
- Int_t ntracks = fTracks->GetNTracks();
-
- if ( slice == fSelectTrackSlice) {
- for(Int_t j=0; j<ntracks; j++) {
-
- AliHLTTPCTrack *gtrack = fTracks->GetCheckedTrack(j);
- if(!gtrack) continue;
-
- // --- CHECK if track is should be drawn
- // select Single Track
- if(gtrack->GetSector() != fSelectTrackSlice) continue;
-
- if (trackcounter != fSelectTrack){
- trackcounter++;
- continue;
- }
- trackcounter++;
- // +++
- //if((fPtThreshold > 0) && (gtrack->GetPt()< fPtThreshold)) continue;
- //if(gtrack->GetNHits() < fMinHits) continue;
-
- currenttrack = j;
- break;
- }
- }
-
- return currenttrack;
-}
-
-//----------------------------------------------------------------------------------------------------
-// EVENTS
-//____________________________________________________________________________________________________
-void AliHLTTPCDisplayMain::ExecPadEvent(Int_t event, Int_t px, Int_t /*py*/, TObject *selected){
- TCanvas *c = (TCanvas *) gTQSender;
-
- if (event == 11 &&selected->InheritsFrom("TH2F")) {
- TH2F *hist = (TH2F*) selected;
-
- Int_t binx = hist->GetXaxis()->FindBin(c->AbsPixeltoX(px)) -1 ;
-// Int_t biny = hist->GetYaxis()->FindBin(c->AbsPixeltoY(py)) -1;
-
- fPadCallback(fPt2Gui, binx);
- }
-}
-
-
+++ /dev/null
-// XEmacs -*-C++-*-
-// $Id$
-
-#ifndef ALIHLTTPCDISPLAYMAIN_H
-#define ALIHLTTPCDISPLAYMAIN_H
-
-/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- * See cxx source for full Copyright notice */
-
-/** @file AliHLTTPCDisplayMain.h
- @author Jochen Thaeder
- @date
- @brief Interface class for ALICE HLT Online Display
-*/
-
-#include <TGeometry.h>
-#include <TObject.h>
-#include <TCanvas.h>
-
-#include "AliHLTTPCTransform.h"
-#include "AliHLTLogging.h"
-
-class AliHLTTPCSpacePointData;
-class AliHLTTPCTrackArray;
-class AliHLTTPCDisplayCharge;
-class AliHLTTPCDisplayPadRow;
-class AliHLTTPCDisplayPad;
-class AliHLTTPCDisplay3D;
-class AliHLTTPCDisplayResiduals;
-class AliHLTTPCDisplayFront;
-
-/**
- * @class AliHLTTPCDisplayMain
- * The class handels the interface between the graphical user interface (AliLHLTGUI)
- * and the worker classes for the ALICE HLT online display. It also handles the interface
- * to the AnalysisChain via HOMER reader class. Furthermore all relavant global variables
- * are stored here via get and set functions.
- * @ingroup alihlt_tpc_display
- */
-
-class AliHLTTPCDisplayMain : public TObject , public AliHLTLogging {
-
- public:
- /** standard constructor */
- // AliHLTTPCDisplayMain();
-
- /**
- * Constructor
- * @param pt2GUI Pointer to class AliHLTGUI
- * @param pt2Function Pointer to callback Function class AliHLTGUI
- */
- AliHLTTPCDisplayMain(void* pt2GUI, void (*pt2Function)(void*, Int_t));
-
- /** standard destructor */
- virtual ~AliHLTTPCDisplayMain();
-
- /** Methods for connecting to data sources, reading data and writeing data */
- /** ---------------------------------------------------------------------- */
-
- //--> TODO check this file location
- /** Connect to Analysis Chain via hosts and Ports specified in AliHLTGUI
- * @param cnt Number hosts
- * @param hostnames Array of hostnames of the TDS
- * @param ports Array of ports of the TDS
- * @param gfile Path to the TPC geometry file
- */
- Int_t Connect( unsigned int cnt, const char** hostnames, unsigned short* ports,Char_t *gfile="$(ALIHLT_TOPDIR)/build/share/alice-hlt/alice.geom" );
-
- /** Disconnet from the Analysis Chain */
- Int_t Disconnect();
-
- /** Reads next event and call reader for raw, clsuter and track data
- * @param nextSwitch Switch for reading the next event.<br>
- Standard is KTRUE.
- */
- Int_t ReadData(Bool_t nextSwitch = kTRUE);
-
- /** Read raw data,do zero suppression and check for occupancy limit. Afterwards fill in two arrays (raw and zerosuppressed). */
- void ReadRawData();
-
- /** Read cluster data and fill cluster structure. */
- void ReadClusterData();
-
- /** Read track data and fill in track structure. */
- void ReadTrackData();
-
- /** Main working function. Calls worker classes and handles displaying
- * @param newRawSlice If set to kTRUE, raw data from a new slice is read and zero suppression is applied.<br>
- * Standard is kFALSE.
- */
- void DisplayEvent(Bool_t newRawSlice = kFALSE);
-
- /** Save all histograms as eps files **/
- void SaveHistograms();
-
-
-
- /** Setup methods */
- /** ------------- */
-
- /** Fill cluster data in structure
- * @param slice Slice ID of datablock where data is in.
- * @param patch Patch ID of datablock where data is in.
- * @param nofClusters Number of clusters.in data block.
- * @param data Pointer to structure where cluster data is written.
- */
- void SetupCluster(Int_t slice, Int_t patch, UInt_t nofClusters, AliHLTTPCSpacePointData* data);
-
- /** Fill track data in structure */
- void SetupTracks();
-
- /** Register methods */
- /** ---------------- */
-
- /** Canvas types
- */
- enum AliHLTTPCDisplayCanvasType_t {
- Ccharge,
- Cpadrow,
- Cpad,
- CthreeD,
- Cresiduals,
- Cfront,
- Chits_s,
- Cq_track,
- Cq_s,
- Cpadrow_pad,
- nCanvasTypes
- };
-
- /** Worker types
- */
- enum AliHLTTPCDisplayWorkerType_t {
- Wcharge,
- Wpadrow,
- Wpad,
- WthreeD,
- Wresiduals,
- Wfront,
- nWorkerTypes
- };
-
-
- /** Register canvas
- * @param canvasType @ref AliHLTTPCDisplayCanvasType_t
- * @param canvas Pointer to TCanvas.
- */
- void RegisterCanvas(AliHLTTPCDisplayCanvasType_t canvasType, TCanvas * canvas ){
- fCanvasArray[canvasType] = canvas;
- }
-
- /** Register worker
- * @param workerType @ref AliHLTTPCDisplayWorkerType_t
- * @param worker Pointer to worker class.
- */
- void RegisterWorker(AliHLTTPCDisplayWorkerType_t workerType, void * worker ){
- fWorkerArray[workerType] = worker;
- }
-
- /** Get pointer to canvas
- * @param canvasType @ref AliHLTTPCDisplayCanvasType_t
- * @return Returns pointer to "canvasType" (@ref AliHLTTPCDisplayCanvasType_t) or NULL if fails.
- */
- TCanvas * GetCanvas(AliHLTTPCDisplayCanvasType_t canvasType){
- if ( !fCanvasArray[canvasType] )
- return NULL;
- else
- return fCanvasArray[canvasType];
- }
-
- /** Get pointer to worker
- * @param workerType @ref AliHLTTPCDisplayWorkerType_t
- * @return Returns pointer to "workerType" (@ref AliHLTTPCDisplayWorkerType_t) or NULL if fails.
- */
- void * GetWorker(AliHLTTPCDisplayWorkerType_t workerType){
- if ( !fWorkerArray[workerType] )
- return NULL;
- else
- return fWorkerArray[workerType];
- }
-
-
-
- void SetRawReaderMode(Int_t f) {fRawReaderMode = f;}
- void SetZeroSuppressionThreshold(Int_t f) {fZeroSuppressionThreshold = f;}
- void SetOccupancyLimit(Float_t f) {fOccupancyLimit = f;}
- void SetBField(Float_t f) {fBField = f;}
- void SetNTimeBins(Int_t f) {fNTimeBins = f;}
-
- Int_t GetRawReaderMode(){return fRawReaderMode;}
- Int_t GetZeroSuppressionThreshold(){return fZeroSuppressionThreshold;}
- Float_t GetOccupancyLimit() {return fOccupancyLimit;}
- Float_t GetBField(){return fBField;}
- Int_t GetNTimeBins() {return fNTimeBins;}
-
- /** Set methods */
- /** ----------- */
-
-
- void SetConnectionStatus(Bool_t f) {fConnect = f;}
-
- // canvas ----
- void SetCanvasCharge(TCanvas *f){fCanvasCharge = f;}
- void SetCanvasPadRow(TCanvas *f){fCanvasPadRow = f;}
- void SetCanvasPad(TCanvas *f){fCanvasPad = f;}
- void SetCanvas3D(TCanvas *f){fCanvas3D = f;}
- void SetCanvasResiduals(TCanvas *f){fCanvasResiduals = f;}
- void SetCanvasFront(TCanvas *f){fCanvasFront = f;}
- void SetCanvasHits_S(TCanvas *f){fCanvasHits_S = f;}
- void SetCanvasQ_Track(TCanvas *f){fCanvasQ_Track = f;}
- void SetCanvasQ_S(TCanvas *f){fCanvasQ_S = f;}
- void SetCanvasPadRow_Pad(TCanvas *f){fCanvasPadRow_Pad = f;}
-
-
- // slices ----
- void SetSlices(){fMinSlice = 0; fMaxSlice = 35; fSlicePair = kFALSE; SetSliceArray();}
- void SetSlices(Int_t s){fMinSlice = s; fMaxSlice = s; fSlicePair = kFALSE; SetSliceArray();}
- void SetSlices(Int_t mins, Int_t maxs){fMinSlice = mins; fMaxSlice = maxs; fSlicePair = kFALSE; SetSliceArray();}
- void SetSlicesPair(Int_t s){fMinSlice = s; fMaxSlice = s; fSlicePair = kTRUE; SetSliceArray();}
- void SetSlicesPair(Int_t mins, Int_t maxs){fMinSlice = mins; fMaxSlice = maxs; fSlicePair = kTRUE; SetSliceArray();}
-
- // cuts ----
- // void SetCutHits(Int_t f){fMinHits = f;}
- // void SetCutPt(Float_t f){fPtThreshold = f;}
- void SetCutHits(Int_t f){fCutHits = f;}
- void SetCutPt(Float_t f){fCutPt = f;}
- void SetCutPsi(Float_t f){fCutPsi = f;}
- void SetCutLambda(Float_t f){fCutLambda = f;}
- void SetCutS(Float_t f){fCut_S = f;}
- void SetIncidentPadrow(Int_t f){fCutPadrow = f;}
-
- // 3D display ----
- void SetInvert() {Int_t tmp = fBackColor; fBackColor = fLineColor; fLineColor = tmp; }
- void SetKeepView(Bool_t f){fKeepView = f;}
- void SetSwitches(Bool_t f1, Bool_t f2, Bool_t f3, Bool_t f4) {fSwitch3DTracks = f1; fSwitch3DCluster = f2; fSwitch3DPadRow = f3; fSwitch3DGeometry = f4;}
- void Set3DRawSwitch(Int_t f) {fSwitch3DRaw = f;}
- void SetTheta(Float_t f) {fTheta = f;}
-
- // raw ----
- void SetZeroSuppression(Bool_t f){fZeroSuppression = f;}
- // -- pad/padrow
- void SetPad(Int_t f){fPad = f;}
- void SetPadRow(Int_t f){fPadRow = f; fNPads = AliHLTTPCTransform::GetNPads(f); }
- void SetSlicePadRow(Int_t f){fSlicePadRow = f;}
- void SetSplitPadRow(Bool_t f){fSplitPadRow = f;}
- // -- front
- void SetFrontDataSwitch(Int_t f){fFrontDataSwitch = f;}
- void SetTimeBinMinMax(Int_t f1, Int_t f2){fTimeBinMin = f1; fTimeBinMax = f2; }
- void SetSplitFront(Bool_t f){fSplitFront = f;}
-
- // track ----
- void SetSelectTrack(Int_t f) {fSelectTrack = f;}
- void SetSelectTrackSlice(Int_t f) {fSelectTrackSlice = f;}
- void SetSelectTrackSwitch(Bool_t f) {fSelectTrackSwitch = f;}
- void SetSelectCluster(Int_t f) {fSelectCluster = f;}
-
- /*
- * **********************************
- * GETTER
- * **********************************
- */
-
-
- Bool_t GetConnectionStatus() {return fConnect;}
- ULong64_t GetEventID() {return fEventID;}
-
- AliHLTTPCSpacePointData* GetSpacePointDataPointer(Int_t slice,Int_t patch){return fClusters[slice][patch];}
- AliHLTTPCTrackArray* GetTrackArrayPointer() {return fTracks;}
- AliHLTTPCDisplayPadRow * GetPadRowPointer() {return fDisplayPadRow;}
- AliHLTTPCDisplayPad * GetPadPointer() {return fDisplayPad;}
-
- // canvas ----
- TCanvas * GetCanvasHits_S(){return fCanvasHits_S;}
- TCanvas * GetCanvasQ_Track(){return fCanvasQ_Track;}
- TCanvas * GetCanvasQ_S(){return fCanvasQ_S;}
- TCanvas * GetCanvasResiduals(){return fCanvasResiduals;}
- TCanvas * GetCanvasCharge(){return fCanvasCharge;}
- TCanvas * GetCanvasPadRow(){return fCanvasPadRow;}
- TCanvas * GetCanvasPad(){return fCanvasPad;}
- TCanvas * GetCanvas3D(){return fCanvas3D;}
- TCanvas * GetCanvasFront(){return fCanvasFront;}
-
- // cuts ----
- Int_t GetCutHits(){return fCutHits;}
- Float_t GetCutPt(){return fCutPt;}
- Float_t GetCutPsi(){return fCutPsi;}
- Float_t GetCutLambda(){return fCutLambda;}
- Float_t GetCutS(){return fCut_S;}
- Int_t GetIncidentPadrow(){return fCutPadrow;}
-
- Int_t GetNumberSpacePoints(Int_t slice,Int_t patch){return fNcl[slice][patch];}
- Int_t GetTracksPerSlice(Int_t slice){return fTracksPerSlice[slice];}
- Bool_t GetDisplaySlice(Int_t slice){ return fSliceArray[slice];}
-
- Int_t GetSelectCluster(){return fSelectCluster;}
- Bool_t GetSelectTrackSwitch() {return fSelectTrackSwitch;}
- Int_t GetSelectTrack() {return fSelectTrack;}
- Int_t GetSelectTrackSlice() {return fSelectTrackSlice;}
-
- Int_t GetGlobalTrack(Int_t slice);
-
- // raw ----
- Bool_t GetZeroSuppression(){return fZeroSuppression;}
- // -- pad/padrow
- Int_t GetPad(){return fPad;}
- Int_t GetNPads(){return fNPads;}
- Int_t GetPadRow(){return fPadRow;}
- Int_t GetSlicePadRow(){return fSlicePadRow;}
- Bool_t GetSplitPadRow(){return fSplitPadRow;}
- // -- front
- // Int_t GetNTimeBins(){return fgNTimeBins;}
- Int_t GetFrontDataSwitch(){return fFrontDataSwitch;}
- Int_t GetTimeBinMin(){return fTimeBinMin;}
- Int_t GetTimeBinMax(){return fTimeBinMax;}
- Bool_t GetSplitFront(){return fSplitFront;}
-
-
-
- Int_t GetLineColor(){return fLineColor;}
- Int_t GetBackColor(){return fBackColor;}
- Bool_t GetKeepView(){return fKeepView;}
- Float_t GetTheta(){return fTheta;}
- Float_t GetPhi(){return fPhi;}
-
- Bool_t Get3DSwitchTracks() {return fSwitch3DTracks;}
- Bool_t Get3DSwitchCluster() {return fSwitch3DCluster;}
- Bool_t Get3DSwitchPadRow() {return fSwitch3DPadRow;}
- Bool_t Get3DSwitchGeometry() {return fSwitch3DGeometry;}
- Int_t Get3DSwitchRaw() {return fSwitch3DRaw;}
-
- Int_t GetTrackParamNHits(){ return fTrackParam.nHits;}
- /*
-#if 0
- Char_t GetTrackParamSlice(){ return Char_t GetTrackParamId();
- Char_t GetTrackParamKappa());
- Char_t GetTrackParamPt());
-Char_t GetTrackParamNHits());
-Char_t GetTrackParamCharge());
-Char_t GetTrackParamRadius());
-Char_t GetTrackParamPhi0());
-Char_t GetTrackParamPsi());
-Char_t GetTrackParamLambda());
-Char_t GetTrackParamBfield());
- #endif
- */
-
- // EXISTS
- Bool_t ExistsRawData() {return fExistsRawData;}
- Bool_t ExistsClusterData() {return fExistsClusterData;}
- Bool_t ExistsTrackData() {return fExistsTrackData;}
-
- // EVENTS
- void ExecPadEvent(Int_t event, Int_t x, Int_t y, TObject *selected);
-
- // Callback Handler
- void * fPt2Gui;
- void (*fPadCallback)(void*, Int_t);
-
- struct AliHLTTPCTrackParameter{
- Int_t nHits;
- Int_t charge;
- Double_t kappa;
- Double_t radius;
- Int_t slice;
- Double_t phi0;
- Double_t psi;
- Double_t lambda;
- Double_t pt;
- Int_t id;
- Double_t bfield;
- Double_t s;
- };
-
- void* fReader; // really HOMERReader*
-
- UInt_t fRawData[159][140][1024]; // Raw Data of one Slice
- UInt_t fRawDataZeroSuppressed[159][140][1024]; // Raw Data of one Slice zero suppressed
-
- AliHLTTPCTrackParameter fTrackParam;
-
- TCanvas **fCanvasArray;
- void **fWorkerArray;
-
-
-// ---------------------------------------------------
- private:
- /** copy constructor prohibited */
- AliHLTTPCDisplayMain(const AliHLTTPCDisplayMain&);
- /** assignment operator prohibited */
- AliHLTTPCDisplayMain& operator=(const AliHLTTPCDisplayMain&);
-
- void SetSliceArray(); // Fill Array with slices which
-
- // ** global constants **
- Int_t fgNTimeBins; // Number of TimeBins
- Int_t fRawReaderMode; // raw reader mode
- Int_t fZeroSuppressionThreshold;
- Float_t fOccupancyLimit;
- Float_t fBField;
- Int_t fNTimeBins;
-
-
- // ** HOMER parameter / connection / data exist **
- ULong64_t fEventID; // Event ID
-
- Bool_t fConnect; // Connection status
-
- Bool_t fExistsRawData; // Raw data present
- Bool_t fExistsClusterData; // Cluster data present
- Bool_t fExistsTrackData; // Track data present
-
- // ** pointer to display classes **
- AliHLTTPCDisplayCharge* fDisplayCharge;
- AliHLTTPCDisplayPadRow* fDisplayPadRow;
- AliHLTTPCDisplayPad* fDisplayPad;
- AliHLTTPCDisplay3D* fDisplay3D;
- AliHLTTPCDisplayResiduals* fDisplayResiduals;
- AliHLTTPCDisplayFront * fDisplayFront;
-
- // ** pointer to canvases in GUI **
- TCanvas * fCanvasCharge;
- TCanvas * fCanvasPadRow;
- TCanvas * fCanvasPad;
- TCanvas * fCanvas3D;
- TCanvas * fCanvasResiduals;
- TCanvas * fCanvasFront;
- TCanvas * fCanvasHits_S;
- TCanvas * fCanvasQ_Track;
- TCanvas * fCanvasQ_S;
- TCanvas * fCanvasPadRow_Pad;
-
- Int_t fTracksPerSlice[36]; // TrackCount per slice
-
- // ** cluster / tarck container **
- AliHLTTPCSpacePointData *fClusters[36][6];
- AliHLTTPCTrackArray *fTracks;
-
- UInt_t fNcl[36][6]; // Number of cluster
-
- // ** selected selected slice(s) **
- Int_t fMinSlice; // Min slice
- Int_t fMaxSlice; // Max slice
- Bool_t fSlicePair; // Pair of slices;
- Bool_t fSliceArray[36]; // Array if slice should be drawn or not
-
- // ** select type of clusters **
- Int_t fSelectCluster; // select all=0, used=1, unused=2 cluster
-
- // ** raw data variables **
- Bool_t fZeroSuppression; // enable zero suppression
- // -- pad/padrow
- Int_t fPad; // pad
- Int_t fNPads; // number of pads in row
- Int_t fPadRow; // padrow
- Int_t fSlicePadRow; // slice where padrow is in
- Bool_t fSplitPadRow; // Split PadRow Canvas
- // -- front
- Int_t fFrontDataSwitch; // select average/sum/maximum
- Int_t fTimeBinMin; // min TimeBin
- Int_t fTimeBinMax; // max TimeBin
- Bool_t fSplitFront; // Split Front Canvas
-
-
-
- // ** select tracks **
- Bool_t fSelectTrackSwitch; // switch ti single track mode
- Int_t fSelectTrack; // select single track
- Int_t fSelectTrackSlice; // select slice for single track
-
-
- // ** cuts on tracks **
- Int_t fCutHits;
- Float_t fCutPt;
- Float_t fCutPsi;
- Float_t fCutLambda;
- Float_t fCut_S;
- Int_t fCutPadrow;
-
- // ** "keepview", angles and colors for 3D view **
- Bool_t fKeepView; // Keep View when redisplaying
-
- Float_t fTheta;
- Float_t fPhi;
-
- Int_t fBackColor; // Background color
- Int_t fLineColor; // Line color
-
- // ** 3D switches **
- Bool_t fSwitch3DCluster;
- Bool_t fSwitch3DTracks;
- Bool_t fSwitch3DPadRow;
- Bool_t fSwitch3DGeometry;
- Int_t fSwitch3DRaw;
-
- ClassDef(AliHLTTPCDisplayMain,0) //Display class
-};
-#endif
+++ /dev/null
-// $Id$
-
-/**
-<pre>
-//_____________________________________________________________
-// AliHLTTPCDisplayPad
-//
-// Display class for the HLT TPC-Pad events.
-</pre>
-*/
-// Author: Jochen Thaeder <mailto:thaeder@kip.uni-heidelberg.de>
-//*-- Copyright © ALICE HLT Group
-
-#include <TH2.h>
-#include <TFile.h>
-#include <TStyle.h>
-#include <TAttText.h>
-#include <TAxis.h>
-#include <TCanvas.h>
-
-#ifdef use_aliroot
-#include <TClonesArray.h>
-#include <AliRun.h>
-#include <AliSimDigits.h>
-#include <AliTPCParam.h>
-#endif
-
-#include "AliHLTStdIncludes.h"
-#include "AliHLTTPCDefinitions.h"
-#include "AliHLTDataTypes.h"
-#include "AliHLTTPCSpacePointData.h"
-#include "AliHLTTPCClusterDataFormat.h"
-#include "AliHLTTPCLogging.h"
-#include "AliHLTTPCTransform.h"
-
-#include "AliHLTTPCDisplayMain.h"
-#include "AliHLTTPCDisplayPad.h"
-
-#if __GNUC__ >= 3
-using namespace std;
-#endif
-
-ClassImp(AliHLTTPCDisplayPad)
-
-//____________________________________________________________________________________________________
- AliHLTTPCDisplayPad::AliHLTTPCDisplayPad(AliHLTTPCDisplayMain* display) :
- fDisplay(display),
- fHistpad1(NULL),
- fHistpad2(NULL),
- fHistpad3(NULL),
- fNTimes( AliHLTTPCTransform::GetNTimeBins() ),
- fBinX(),
- fTmpEvent(0) {
- // constructor
-
- fBinX[0] = 0;
- fBinX[1] = fNTimes -1;
-
- fHistpad1 = new TH1F ("fHistpad1","Selected Pad -1;Timebin #",fNTimes,0,fNTimes-1);
- fHistpad2 = new TH1F ("fHistpad2","Selected Pad;Timebin #",fNTimes,0,fNTimes-1);
- fHistpad3 = new TH1F ("fHistpad3","Selected Pad +1;Timebin #",fNTimes,0,fNTimes-1);
-
- fHistpad1->SetTitleSize(0.03);
- fHistpad1->GetXaxis()->SetLabelSize(0.03);
- fHistpad1->GetXaxis()->SetTitleSize(0.03);
- fHistpad1->GetYaxis()->SetLabelSize(0.03);
- fHistpad1->GetYaxis()->SetTitleSize(0.03);
-
- fHistpad2->SetTitleSize(0.03);
- fHistpad2->GetXaxis()->SetLabelSize(0.03);
- fHistpad2->GetXaxis()->SetTitleSize(0.03);
- fHistpad2->GetYaxis()->SetLabelSize(0.03);
- fHistpad2->GetYaxis()->SetTitleSize(0.03);
-
- fHistpad3->SetTitleSize(0.03);
- fHistpad3->GetXaxis()->SetLabelSize(0.03);
- fHistpad3->GetXaxis()->SetTitleSize(0.03);
- fHistpad3->GetYaxis()->SetLabelSize(0.03);
- fHistpad3->GetYaxis()->SetTitleSize(0.03);
-}
-
-//____________________________________________________________________________________________________
-AliHLTTPCDisplayPad::~AliHLTTPCDisplayPad() {
- // destructor
- if ( fHistpad1 ){
- delete fHistpad1;
- fHistpad1 = NULL;
- }
-
- if ( fHistpad2 ){
- delete fHistpad2;
- fHistpad2 = NULL;
- }
-
- if ( fHistpad3 ){
- delete fHistpad3;
- fHistpad3 = NULL;
- }
-}
-
-//____________________________________________________________________________________________________
-void AliHLTTPCDisplayPad::Reset(){
- fHistpad1->Reset();
- fHistpad2->Reset();
- fHistpad3->Reset();
-}
-
-//____________________________________________________________________________________________________
-void AliHLTTPCDisplayPad::Save(){
- fDisplay->GetCanvasPad()->SaveAs("HLT-PadView.eps");
-}
-
-//____________________________________________________________________________________________________
-void AliHLTTPCDisplayPad::Fill(){
- // Fill Pad Histogram
-
- Int_t padRow = fDisplay->GetPadRow();
- Int_t pad = fDisplay->GetPad();
- Int_t nextPad = pad + 1;
- Int_t prevPad = pad - 1;
-
- // !!
- // !! DO unrolling because of cache effects (avoid cache trashing) !!
- // !!
-
- if ( fDisplay->GetZeroSuppression() ){
- for (Int_t timeBin=0; timeBin <= fDisplay->GetNTimeBins(); timeBin++){
- fHistpad1->Fill( timeBin, fDisplay->fRawDataZeroSuppressed[padRow][prevPad][timeBin] );
- } // end time
-
- for (Int_t timeBin=0; timeBin <= fDisplay->GetNTimeBins(); timeBin++){
- fHistpad2->Fill( timeBin, fDisplay->fRawDataZeroSuppressed[padRow][pad][timeBin] );
- } // end time
-
- for (Int_t timeBin=0; timeBin <= fDisplay->GetNTimeBins(); timeBin++){
- fHistpad3->Fill( timeBin, fDisplay->fRawDataZeroSuppressed[padRow][nextPad][timeBin] );
- } // end time
-
- } // end - if ( fDisplay->GetZeroSuppression() ){
-
- else {
- for (Int_t timeBin=0; timeBin <= fDisplay->GetNTimeBins(); timeBin++){
- fHistpad1->Fill( timeBin, fDisplay->fRawData[padRow][prevPad][timeBin] );
- } // end time
-
- for (Int_t timeBin=0; timeBin <= fDisplay->GetNTimeBins(); timeBin++){
- fHistpad2->Fill( timeBin, fDisplay->fRawData[padRow][pad][timeBin] );
- } // end time
-
- for (Int_t timeBin=0; timeBin <= fDisplay->GetNTimeBins(); timeBin++){
- fHistpad3->Fill( timeBin, fDisplay->fRawData[padRow][nextPad][timeBin] );
- } // end time
-
- } // end - else of if ( fDisplay->GetZeroSuppression() ){
-}
-
-//____________________________________________________________________________________________________
-void AliHLTTPCDisplayPad::Draw(){
- Char_t title[256];
-
- fDisplay->GetCanvasPad()->cd();
- fDisplay->GetCanvasPad()->Clear();
- fDisplay->GetCanvasPad()->Divide(1,3);
-
- // Keep Zoom
- if (!fDisplay->GetKeepView() || (fBinX[1]>fNTimes)){
- fBinX[0] = 0;
- fBinX[1] = fNTimes -1;
- }
-
- fHistpad1->SetAxisRange(fBinX[0],fBinX[1]);
- fHistpad2->SetAxisRange(fBinX[0],fBinX[1]);
- fHistpad3->SetAxisRange(fBinX[0],fBinX[1]);
-
-
- fDisplay->GetCanvasPad()->cd(1);
- sprintf(title,"Selected Pad %d",fDisplay->GetPad() -1);
- fHistpad1->SetStats(kFALSE);
- fHistpad1->SetTitle(title);
- fHistpad1->Draw();
-
- fDisplay->GetCanvasPad()->cd(2);
- sprintf(title,"Selected Pad %d",fDisplay->GetPad() );
- fHistpad2->SetStats(kFALSE);
- fHistpad2->SetTitle(title);
- fHistpad2->Draw();
-
- fDisplay->GetCanvasPad()->cd(3);
- sprintf(title,"Selected Pad %d",fDisplay->GetPad() +1);
- fHistpad3->SetStats(kFALSE);
- fHistpad3->SetTitle(title);
- fHistpad3->Draw();
-
- fDisplay->GetCanvasPad()->Modified();
- fDisplay->GetCanvasPad()->Update();
-
- // Keep Zoom
- fDisplay->GetCanvasPad()->Connect("ProcessedEvent(Int_t,Int_t,Int_t,TObject*)","AliHLTTPCDisplayPad",(void*) this,"ExecEvent(Int_t,Int_t,Int_t,TObject*)");
-}
-
-//____________________________________________________________________________________________________
-void AliHLTTPCDisplayPad::ExecEvent(Int_t event, Int_t /*px*/, Int_t /*py*/, TObject *selected){
- // Saves the Zoom Position of the Histogram
-
- // - Mouse down on Axis : StartPoint of Range
- if (event == 1 && selected->InheritsFrom("TAxis"))
- fTmpEvent = 1;
-
- // - Mouse pressed on Axis : Real Zoom process not only click
- else if (event == 21 && selected->InheritsFrom("TAxis") && fTmpEvent == 1)
- fTmpEvent = 21;
-
- // - Mouse pressed on Axis : Still pressed
- else if (event == 21 && selected->InheritsFrom("TAxis") && fTmpEvent == 21)
- return;
-
- // - Mouse up on Axis : End Point of Rangex
- else if (event == 11 && selected->InheritsFrom("TAxis") && fTmpEvent == 21){
- TAxis * axis = (TAxis*) selected;
-
- if (selected == fHistpad1->GetXaxis() || selected == fHistpad2->GetXaxis() || selected == fHistpad3->GetXaxis()){
- fBinX[0] = axis->GetFirst() -1;
- fBinX[1] = axis->GetLast() -1;
- }
-
- fTmpEvent = 0;
- }
- else fTmpEvent = 0;
-}
+++ /dev/null
-// XEmacs -*-C++-*-
-// $Id$
-
-#ifndef ALIHLTTPCDISPLAYPAD_H
-#define ALIHLTTPCDISPLAYPAD_H
-/** \class AliHLTTPCDisplayPad
-<pre>
-//_____________________________________________________________
-// AliHLTTPCDisplayPad
-//
-// Display class for the HLT TPC-Pad events.
-</pre>
-*/
-// Author: Jochen Thaeder <mailto:thaeder@kip.uni-heidelberg.de>
-//*-- Copyright © ALICE HLT Group
-
-#include <TCanvas.h>
-#include <TH1.h>
-#include <TH2F.h>
-#include <AliHLTTPCDisplayMain.h>
-#include <AliHLTTPCDisplayPadRow.h>
-#include <AliHLTTPCDisplayFront.h>
-
-class AliHLTTPCDisplayPad : public AliHLTLogging {
- friend void AliHLTTPCDisplayPadRow::Draw();
- friend void AliHLTTPCDisplayFront::Draw();
-
- public:
- AliHLTTPCDisplayPad(AliHLTTPCDisplayMain* display) ;
- virtual ~AliHLTTPCDisplayPad();
-
- void Fill();
- void Draw();
- void Reset();
- void Save();
- void ExecEvent(Int_t event, Int_t x, Int_t y, TObject *selected);
-
-
- private:
- AliHLTTPCDisplayPad (const AliHLTTPCDisplayPad&);
- AliHLTTPCDisplayPad& operator=(const AliHLTTPCDisplayPad&);
-
- AliHLTTPCDisplayMain* fDisplay;
-
- TH1F *fHistpad1; // histogram for pad in padrow
- TH1F *fHistpad2; // histogram for pad in padrow
- TH1F *fHistpad3; // histogram for pad in padrow
-
- Int_t fNTimes;
- Int_t fBinX[2]; // Minimum / Maximum - Bin on X Axis
- Int_t fTmpEvent; // Tmp Event for get user range on Axis
-
- ClassDef(AliHLTTPCDisplayPad,0)
-};
-
-#endif // ALIHLTTPCDISPLAYPAD_H
+++ /dev/null
-// $Id$
-
-/**
-<pre>
-//_____________________________________________________________
-// AliHLTTPCDisplayPadRow
-//
-// Display class for the HLT TPC-PadRow events.
-</pre>
-*/
-// Author: Jochen Thaeder <mailto:thaeder@kip.uni-heidelberg.de>
-//*-- Copyright © ALICE HLT Group
-
-#include <TH2.h>
-#include <TFile.h>
-#include <TStyle.h>
-#include <TAttText.h>
-#include <TAxis.h>
-#include <TCanvas.h>
-#include <TPolyMarker3D.h>
-
-#ifdef use_aliroot
-#include <TClonesArray.h>
-#include <AliRun.h>
-#include <AliSimDigits.h>
-#include <AliTPCParam.h>
-#endif
-
-#include "AliHLTStdIncludes.h"
-#include "AliHLTTPCDefinitions.h"
-#include "AliHLTDataTypes.h"
-#include "AliHLTTPCSpacePointData.h"
-#include "AliHLTTPCClusterDataFormat.h"
-#include "AliHLTTPCLogging.h"
-#include "AliHLTTPCTransform.h"
-#include "AliHLTTPCDigitReaderPacked.h"
-#include "AliHLTTPCDigitReaderDecoder.h"
-
-
-#include "AliHLTTPCDisplayMain.h"
-#include "AliHLTTPCDisplayPadRow.h"
-#include "AliHLTTPCDisplayPad.h"
-
-#if __GNUC__ >= 3
-using namespace std;
-#endif
-
-ClassImp(AliHLTTPCDisplayPadRow)
-
-//____________________________________________________________________________________________________
- AliHLTTPCDisplayPadRow::AliHLTTPCDisplayPadRow(AliHLTTPCDisplayMain* display) :
- fDisplay(NULL),
- fHistrawcl(NULL),
- fHistraw(NULL),
- fcolorbin(),
- fbinct(),
- fpmarr(),
- fNTimes( AliHLTTPCTransform::GetNTimeBins() ),
- fBinX(),
- fBinY(),
- fTmpEvent(0) {
-
- // constructor
- fDisplay = display;
-
- fBinX[0] = 0;
- fBinX[1] = fDisplay->GetNPads();
- fBinY[0] = 0;
- fBinY[1] = fNTimes -1;
-
- for (Int_t ii = 0;ii < 20; ii++)
- fpmarr[ii] = 0;
-
- Int_t maxpads = 150;
- Int_t padbinning = maxpads*10;
-
- fHistraw = new TH2F("fHistraw","Selected PadRow with found Clusters;Pad #;Timebin #",maxpads,0,maxpads-1,fNTimes,0,fNTimes-1);
- fHistrawcl = new TH1F("fHistrawcl","cvcv;ddd;kkk",padbinning,0,maxpads-1);
-
- fHistraw->SetOption("COLZ");
- fHistraw->SetTitleSize(0.03);
- fHistraw->GetXaxis()->SetLabelSize(0.03);
- fHistraw->GetXaxis()->SetTitleSize(0.03);
- fHistraw->GetYaxis()->SetLabelSize(0.03);
- fHistraw->GetYaxis()->SetTitleSize(0.03);
-
- gStyle->SetPalette(1);
-}
-
-//____________________________________________________________________________________________________
-AliHLTTPCDisplayPadRow::~AliHLTTPCDisplayPadRow() {
- // destructor
- if ( fHistraw ){
- delete fHistraw;
- fHistraw = NULL;
- }
- if ( fHistrawcl ){
- delete fHistrawcl;
- fHistrawcl = NULL;
- }
- for (Int_t ii=19; ii <= 0; ii--){ // try fwd
- if ( fpmarr[ii] ){
- delete [] fpmarr[ii];
- fpmarr[ii] = NULL;
- }
- }
-}
-
-//____________________________________________________________________________________________________
-void AliHLTTPCDisplayPadRow::Reset(){
- fHistraw->Reset();
- fHistrawcl->Reset();
-}
-
-//____________________________________________________________________________________________________
-void AliHLTTPCDisplayPadRow::Save(){
- fDisplay->GetCanvasCharge()->SaveAs("HLT-PadRowView.eps");
-}
-
-//____________________________________________________________________________________________________
-//void AliHLTTPCDisplayPadRow::Fill(Int_t patch, ULong_t dataBlock, ULong_t dataLen){
-void AliHLTTPCDisplayPadRow::Fill(){
- // Fill PadRow Histogram
-
- AliHLTTPCDigitReaderDecoder digitReader();
-
- // bool readValue = true;
- //Int_t rowOffset = 0;
-
- Int_t padRow = fDisplay->GetPadRow();
- //Int_t slice = fDisplay->GetSlicePadRow();
-
-#if 0
- // Initialize RAW DATA
- Int_t firstRow = AliHLTTPCTransform::GetFirstRow(patch);
- Int_t lastRow = AliHLTTPCTransform::GetLastRow(patch);
-
-
- // Outer sector, patches 2, 3, 4, 5 - start counting in patch 2 with row 0
- if ( patch >= 2 ) rowOffset = AliHLTTPCTransform::GetFirstRow( 2 );
-
- // Initialize block for reading packed data
- void* tmpdataBlock = (void*) dataBlock;
- digitReader.InitBlock(tmpdataBlock,dataLen,patch,slice);
-
- readValue = digitReader.Next();
-
- if (!readValue){
- LOG(AliHLTTPCLog::kError,"AliHLTTPCDisplayPadRow::Fill","Read first value") << "No value in data block" << ENDLOG;
- return;
- }
-#endif
- if ( fDisplay->GetZeroSuppression() ){
- for (Int_t pad=0; pad < AliHLTTPCTransform::GetNPads(padRow); pad++){
- // for (Int_t timeBin=fDisplay->GetTimeBinMin(); timeBin <= fDisplay->GetTimeBinMax(); timeBin++){
- for (Int_t timeBin=0; timeBin <= fDisplay->GetNTimeBins(); timeBin++){
-
- fHistraw->Fill(pad,timeBin,fDisplay->fRawDataZeroSuppressed[padRow][pad][timeBin]);
- } // end time
- } // end pad
-
- } // end - if ( fDisplay->GetZeroSuppression() ){
-
- else {
- for (Int_t pad=0; pad < AliHLTTPCTransform::GetNPads(padRow); pad++){
- // for (Int_t timeBin=fDisplay->GetTimeBinMin(); timeBin <= fDisplay->GetTimeBinMax(); timeBin++){
- for (Int_t timeBin=0; timeBin <= fDisplay->GetNTimeBins(); timeBin++){
- fHistraw->Fill(pad,timeBin,fDisplay->fRawData[padRow][pad][timeBin]);
- } // end time
- } // end pad
- } // end - else of if ( fDisplay->GetZeroSuppression() ){
-
-#if 0
- // FILL PADROW 3D --- Initialize the colorbins
- if ( fDisplay->Get3DSwitchPadRow() ){
- for (UInt_t ii=0;ii < 20;ii++){
- fbinct[ii] = 0;
- fcolorbin[ii] = 0;
- }
-
- // read number of entries in colorbin
- while ( readValue ){
-
- Int_t row = digitReader.GetRow() + rowOffset;
-
- if (row == padRow){
- UInt_t charge = digitReader.GetSignal();
-
- for (UInt_t ii=0;ii < 19;ii++){
- if ( charge > (ii*15) && charge <= ((ii*15) + 15) ) fcolorbin[ii]++;
- }
- // larger than 19 * 15
- if (charge > 285 ) fcolorbin[19]++;
- }
-
- // read next value
- readValue = digitReader.Next();
-
- if(!readValue) break; //No more value
- }
-
- // Initialize fpmarr[color][3*colorbin[ii]]
- for (Int_t ii = 0; ii < 20; ii++) {
- if ( fpmarr[ii] ) delete[] fpmarr[ii];
- fpmarr[ii] = new Float_t[fcolorbin[ii]*3];
- }
-
- // Rewind the raw reader and fill the polymarker3D
- digitReader.InitBlock(tmpdataBlock,lastRow,patch,slice);
-
- readValue = digitReader.Next();
- } // END if (fDisplay->Get3DSwitchPadRow())
-
- // -- Fill Raw Data
- while ( readValue ){
-
- Int_t row = digitReader.GetRow() + rowOffset;
-
- // select padrow to fill in histogramm
- if (row == padRow){
- UChar_t pad = digitReader.GetPad();
- UShort_t time = digitReader.GetTime();
- UInt_t charge = digitReader.GetSignal();
- Float_t xyz[3];
- //fHistraw->Fill(pad,time,charge);
-
- if ( fDisplay->Get3DSwitchPadRow() ) {
- // Transform raw coordinates to local coordinates
- AliHLTTPCTransform::RawHLT2Global(xyz, slice, padRow, pad, time);
-
- for (UInt_t ii=0;ii < 19;ii++){
- if ( charge > (ii*15) && charge <= ((ii*15) + 15) ){
- fpmarr[ii][fbinct[ii]] = xyz[0];
- fpmarr[ii][fbinct[ii]+1] = xyz[1];
- fpmarr[ii][fbinct[ii]+2] = xyz[2];
- fbinct[ii] += 3;
- }
- }
- // larger than 19 * 15
- if (charge > 285 ) {
- fpmarr[19][fbinct[19]] = xyz[0];
- fpmarr[19][fbinct[19]+1] = xyz[1];
- fpmarr[19][fbinct[19]+2] = xyz[2];
- fbinct[19] += 3;
- }
- } // END if (fSwitch3DPadRow)
-
- } // END if (row == padRow){
-
- // read next value
- readValue = digitReader.Next();
-
- //Check where to stop:
- if(!readValue) break; //No more value
- }
-
-#endif
-#if 0
- if (fDisplay->ExistsClusterData()){
- AliHLTTPCSpacePointData *points = fDisplay->GetSpacePointDataPointer(slice,patch);
- if(!points) return;
-
- Float_t xyz[3];
- for(Int_t i=0; i< fDisplay->GetNumberSpacePoints(slice,patch); i++){
- xyz[0] = points[i].fX;
- xyz[1] = points[i].fY;
- xyz[2] = points[i].fZ;
-
- // select padrow to fill in histogramm
- if (padRow == AliHLTTPCTransform::GetPadRow(xyz[0])){
- AliHLTTPCTransform::LocHLT2Raw(xyz, slice, padRow);
- fHistrawcl->Fill(xyz[1],xyz[2]);
- }
- }
- } // END if (fDisplay->ExistsClusterData()){
-#endif
-
-}
-
-//____________________________________________________________________________________________________
-void AliHLTTPCDisplayPadRow::Draw(){
-
- fDisplay->GetCanvasPadRow()->cd();
- fDisplay->GetCanvasPadRow()->Clear();
-
- if (fDisplay->GetSplitPadRow()){
- fDisplay->GetCanvasPadRow()->Divide(1,2);
- fDisplay->GetCanvasPadRow()->cd(1);
- }
-
- Char_t title[256];
- sprintf(title,"Selected PadRow %d with found Clusters",fDisplay->GetPadRow());
-
- // Keep Zoom
- if (!fDisplay->GetKeepView() || (fBinX[1]>fDisplay->GetNPads()) || (fBinY[1]>fNTimes)){
- fBinX[0] = 0;
- fBinX[1] = fDisplay->GetNPads();
- fBinY[0] = 0;
- fBinY[1] = fNTimes - 1;
- }
-
- fHistraw->SetAxisRange(fBinX[0],fBinX[1]);
- fHistraw->SetAxisRange(fBinY[0],fBinY[1],"Y");
- fHistraw->SetTitle(title);
- fHistraw->SetStats(kFALSE);
- fHistraw->Draw("COLZ");
-
- if ( fDisplay->ExistsClusterData() ){
- //cout << "XX" << endl;
- fHistrawcl->SetAxisRange(fBinX[0],fBinX[1]);
- fHistrawcl->SetAxisRange(fBinY[0],fBinY[1],"Y");
- fHistrawcl->SetStats(kFALSE);
- fHistrawcl->SetMarkerStyle(28);
- fHistrawcl->SetMarkerSize(2);
- fHistrawcl->SetMarkerColor(1);
- fHistrawcl->Draw("psame");
- }
-
- if (fDisplay->GetSplitPadRow()){
- fDisplay->GetCanvasPadRow()->cd(2);
- fDisplay->GetPadPointer()->fHistpad2->Draw();
- }
-
- fDisplay->GetCanvasPadRow()->Modified();
- fDisplay->GetCanvasPadRow()->Update();
-
- // Select Pad
- fDisplay->GetCanvasPadRow()->Connect("ProcessedEvent(Int_t,Int_t,Int_t,TObject*)","AliHLTTPCDisplayMain",(void*) fDisplay,"ExecPadEvent(Int_t,Int_t,Int_t,TObject*)");
- // Keep Zoom
- fDisplay->GetCanvasPadRow()->Connect("ProcessedEvent(Int_t,Int_t,Int_t,TObject*)","AliHLTTPCDisplayPadRow",(void*) this,"ExecEvent(Int_t,Int_t,Int_t,TObject*)");
-}
-
-//____________________________________________________________________________________________________
-void AliHLTTPCDisplayPadRow::Draw3D(){
- Int_t markercolor = 51;
-
- for (UInt_t ii=0;ii < 20;ii++){
- if (fcolorbin[ii]> 0){
-
- TPolyMarker3D* pm = new TPolyMarker3D(fcolorbin[ii], fpmarr[ii], 7 );
- pm->SetBit(kCanDelete);
-
- pm->SetMarkerColor(markercolor);
- pm->Draw("");
- }
-
- // in order to have the SetPalette(1), so called "pretty"
- if (ii % 2 == 0 ) markercolor += 2;
- else markercolor += 3;
- }
-}
-
-//____________________________________________________________________________________________________
-void AliHLTTPCDisplayPadRow::ExecEvent(Int_t event, Int_t /*px*/, Int_t /*py*/, TObject *selected){
- // Saves the Zoom Position of the Histogram
-
- // - Mouse down on Axis : StartPoint of Range
- if (event == 1 && selected->InheritsFrom("TAxis"))
- fTmpEvent = 1;
-
- // - Mouse pressed on Axis : Real Zoom process not only click
- else if (event == 21 && selected->InheritsFrom("TAxis") && fTmpEvent == 1)
- fTmpEvent = 21;
-
- // - Mouse pressed on Axis : Still pressed
- else if (event == 21 && selected->InheritsFrom("TAxis") && fTmpEvent == 21)
- return;
-
- // - Mouse up on Axis : End Point of Rangex
- else if (event == 11 && selected->InheritsFrom("TAxis") && fTmpEvent == 21){
- TAxis * axis = (TAxis*) selected;
-
- if (selected == fHistraw->GetXaxis() || selected == fHistrawcl->GetXaxis()){
- fBinX[0] = axis->GetFirst() -1;
- fBinX[1] = axis->GetLast() -1;
- }
- else {
- fBinY[0] = axis->GetFirst() -1;
- fBinY[1] = axis->GetLast() -1;
- }
-
-
- // Reset();
-// Fill();
- // Draw();
-
- fTmpEvent = 0;
- }
- else fTmpEvent = 0;
-}
+++ /dev/null
-// XEmacs -*-C++-*-
-// $Id$
-
-#ifndef ALIHLTTPCDISPLAYPADROW_H
-#define ALIHLTTPCDISPLAYPADROW_H
-/** \class AliHLTTPCDisplayPadRow
-<pre>
-//_____________________________________________________________
-// AliHLTTPCDisplayPadRow
-//
-// Display class for the HLT TPC-PadRow events.
-</pre>
-*/
-// Author: Jochen Thaeder <mailto:thaeder@kip.uni-heidelberg.de>
-//*-- Copyright © ALICE HLT Group
-
-#include <TCanvas.h>
-#include <TH1.h>
-#include <TH2F.h>
-#include <AliHLTTPCDisplayMain.h>
-
-class AliHLTTPCDisplayPadRow : public AliHLTLogging {
-
- public:
- AliHLTTPCDisplayPadRow(AliHLTTPCDisplayMain* display) ;
- virtual ~AliHLTTPCDisplayPadRow();
-
- // void Fill(Int_t patch, ULong_t dataBlock, ULong_t dataLen);
- void Fill();
- void Draw();
- void Reset();
- void Save();
- void Draw3D();
- void ExecEvent(Int_t event, Int_t x, Int_t y, TObject *selected);
-
- private:
- AliHLTTPCDisplayPadRow (const AliHLTTPCDisplayPadRow&);
- AliHLTTPCDisplayPadRow& operator=(const AliHLTTPCDisplayPadRow&);
-
- AliHLTTPCDisplayMain* fDisplay;
-
- TH1F *fHistrawcl; // histogram for cluster in padrow
- TH2F *fHistraw; // histogram for signals in padrow
-
- Int_t fcolorbin[20]; // number of entries per colorbin
- Int_t fbinct[20]; // index of colorbin
- Float_t *fpmarr[20]; // contains point data
- Int_t fNTimes; // number of timebins
- Int_t fBinX[2]; // Minimum / Maximum - Bin on X Axis
- Int_t fBinY[2]; // Minimum / Maximum - Bin on Y Axis
- Int_t fTmpEvent; // Tmp Event for get user range on Axis
-
- ClassDef(AliHLTTPCDisplayPadRow,0)
-};
-
-#endif // ALIHLTTPCDISPLAYPADROW_H
+++ /dev/null
-// $Id$
-
-/**
-<pre>
-//_____________________________________________________________
-// AliHLTTPCDisplayResiduals
-//
-// Display class for the HLT TPC-Residuals events.
-</pre>
-*/
-// Author: Jochen Thaeder <mailto:thaeder@kip.uni-heidelberg.de>
-//*-- Copyright © ALICE HLT Group
-
-#include "AliHLTTPCDisplayResiduals.h"
-#include "AliHLTTPCDisplayPadRow.h"
-
-#include "AliHLTStdIncludes.h"
-#include <TH2.h>
-#include <TFile.h>
-#include <TStyle.h>
-#include <TGraph.h>
-#include <TMultiGraph.h>
-#include <TAttText.h>
-#include <TAxis.h>
-#include <TCanvas.h>
-
-
-#ifdef use_aliroot
-#include <TClonesArray.h>
-#include <AliRun.h>
-#include <AliSimDigits.h>
-#include <AliTPCParam.h>
-#endif
-
-#include "AliHLTTPCDefinitions.h"
-#include "AliHLTDataTypes.h"
-#include "AliHLTTPCSpacePointData.h"
-#include "AliHLTTPCClusterDataFormat.h"
-#include "AliHLTTPCTrackletDataFormat.h"
-
-
-#include "AliHLTTPCDigitReader.h"
-#include "AliHLT_C_Component_WrapperInterface.h"
-
-#include "AliHLTTPCDisplayMain.h"
-
-#include "AliHLTTPCLogging.h"
-#include "AliHLTTPCDisplay.h"
-#include "AliHLTTPCTransform.h"
-#include "AliHLTTPCTrack.h"
-#include "AliHLTTPCTrackArray.h"
-#include "AliHLTTPCMemHandler.h"
-#include "AliHLTTPCDigitReaderPacked.h"
-
-
-#if __GNUC__ >= 3
-using namespace std;
-#endif
-
-ClassImp(AliHLTTPCDisplayResiduals)
-
-//____________________________________________________________________________________________________
- AliHLTTPCDisplayResiduals::AliHLTTPCDisplayResiduals(AliHLTTPCDisplayMain* display):
- fDisplay(NULL),
- fHistallresidualsY(NULL),
- fHistallresidualsZ(NULL),
- fHistHits_S(NULL),
- fHistQ_Track(NULL),
- fHistQ_S(NULL),
- fGraphresidualsY(NULL),
- fGraphresidualsZ(NULL),
- fGraphresidualsYLength(NULL) {
-
- // constructor
- fDisplay = display;
-
- fHistallresidualsY = new TH1F ("fHistallresidualsY","Y Residuals of all tracks in selected slices;residuals",5000,-100,100);
- fHistallresidualsZ = new TH1F ("fHistallresidualsZ","Z Residuals of all tracks in selected slices;residuals",5000,-100,100);
- fHistHits_S = new TH1F ("fHistHits_S","Number of cluster over track length;#Hits/s",20,0,20);
- fHistQ_Track = new TH1F ("fHistQ_Track","Average cluster charge per track;<q>/track",500,0,500);
- fHistQ_S = new TH1F ("fHistQ_S","Total cluster charge over track length;Q/s",500,0,500);
-
- fHistallresidualsY->SetTitleSize(0.03);
- fHistallresidualsY->GetXaxis()->SetLabelSize(0.03);
- fHistallresidualsY->GetXaxis()->SetTitleSize(0.03);
- fHistallresidualsY->GetYaxis()->SetLabelSize(0.03);
- fHistallresidualsY->GetYaxis()->SetTitleSize(0.03);
-
- fHistallresidualsZ->SetTitleSize(0.03);
- fHistallresidualsZ->GetXaxis()->SetLabelSize(0.03);
- fHistallresidualsZ->GetXaxis()->SetTitleSize(0.03);
- fHistallresidualsZ->GetYaxis()->SetLabelSize(0.03);
- fHistallresidualsZ->GetYaxis()->SetTitleSize(0.03);
-
- fHistHits_S->SetTitleSize(0.03);
- fHistHits_S->GetXaxis()->SetLabelSize(0.03);
- fHistHits_S->GetXaxis()->SetTitleSize(0.03);
- fHistHits_S->GetYaxis()->SetLabelSize(0.03);
- fHistHits_S->GetYaxis()->SetTitleSize(0.03);
-
- fHistQ_Track->SetTitleSize(0.03);
- fHistQ_Track->GetXaxis()->SetLabelSize(0.03);
- fHistQ_Track->GetXaxis()->SetTitleSize(0.03);
- fHistQ_Track->GetYaxis()->SetLabelSize(0.03);
- fHistQ_Track->GetYaxis()->SetTitleSize(0.03);
-
- fHistQ_S->SetTitleSize(0.03);
- fHistQ_S->GetXaxis()->SetLabelSize(0.03);
- fHistQ_S->GetXaxis()->SetTitleSize(0.03);
- fHistQ_S->GetYaxis()->SetLabelSize(0.03);
- fHistQ_S->GetYaxis()->SetTitleSize(0.03);
-}
-
-//____________________________________________________________________________________________________
-AliHLTTPCDisplayResiduals::~AliHLTTPCDisplayResiduals() {
- // destructor
- if ( fHistallresidualsY){
- delete fHistallresidualsY;
- fHistallresidualsY = NULL;
- }
- fHistallresidualsY = NULL;
- if ( fHistallresidualsZ){
- delete fHistallresidualsZ;
- fHistallresidualsZ = NULL;
- }
- if ( fHistHits_S){
- delete fHistHits_S;
- fHistHits_S = NULL;
- }
- if ( fHistQ_Track){
- delete fHistQ_Track;
- fHistQ_Track = NULL;
- }
- if ( fHistQ_S){
- delete fHistQ_S;
- fHistQ_S = NULL;
- }
-}
-
-//____________________________________________________________________________________________________
-void AliHLTTPCDisplayResiduals::Reset(){
- fHistallresidualsY->Reset();
- fHistallresidualsZ->Reset();
- fHistHits_S->Reset();
- fHistQ_Track->Reset();
- fHistQ_S->Reset();
-
- fDisplay->GetCanvasResiduals()->Clear();
- fDisplay->GetCanvasHits_S()->Clear();
- fDisplay->GetCanvasQ_Track()->Clear();
- fDisplay->GetCanvasQ_S()->Clear();
-}
-
-//____________________________________________________________________________________________________
-void AliHLTTPCDisplayResiduals::Save(){
- fDisplay->GetCanvasResiduals()->SaveAs("HLT-ResidualsView.eps");
- fDisplay->GetCanvasHits_S()->SaveAs("HLT-Hits_S.eps");
- fDisplay->GetCanvasQ_Track()->SaveAs("HLT-Q_Track.eps");
- fDisplay->GetCanvasQ_S()->SaveAs("HLT-Q_S.eps");
-}
-
-
-//____________________________________________________________________________________________________
-void AliHLTTPCDisplayResiduals::Fill(){
- // Fill Resiudals Histograms / Graphs
-
- AliHLTTPCTrackArray* tracks = fDisplay->GetTrackArrayPointer();
- Int_t ntracks = tracks->GetNTracks();
-
- Double_t maxResidualY = 0.;
- Double_t maxResidualZ = 0.;
-
- fGraphresidualsY = NULL;
- fGraphresidualsYLength = NULL;
- fGraphresidualsZ = NULL;
-
- for(Int_t j=0; j<ntracks; j++) {
-
- AliHLTTPCTrack *gtrack = tracks->GetCheckedTrack(j);
- if(!gtrack) continue;
-
- // ---------------------------------------------------------------------
- // ++ Select if slice should be displayed or not ( selection in DISPLAY )
-
- Int_t slice = gtrack->GetSector();
- if (!fDisplay->GetDisplaySlice(slice)) continue;
-
- // -------------------
- // Get track parameter
-
- Int_t nHits = gtrack->GetNHits(); // Number of associated hits to track
- Double_t radius = gtrack->GetRadius(); // radius
- Double_t kappa = gtrack->GetKappa(); // curvature = 1/R , signed
- Double_t lambda = atan( gtrack->GetTgl() ); // dipAngle lambda
-
- // -----------------------------
- // ++ Check for straightr tracks
-
- if (kappa == 0 && AliHLTTPCTransform::GetBFieldValue() > 0.) {
- printf("-#- KAPPA == 0 -#-");
- // continue;
- }
-
- // ------------------------------------
- // ++ Get first/last point of the track
-
- Double_t xyzL[3]; // lastpoint of track
- Double_t xyzF[3]; // firstpoint of track
-
- xyzF[0] = gtrack->GetFirstPointX();
- xyzF[1] = gtrack->GetFirstPointY();
- xyzF[2] = gtrack->GetFirstPointZ();
-
- xyzL[0] = gtrack->GetLastPointX();
- xyzL[1] = gtrack->GetLastPointY();
- xyzL[2] = gtrack->GetLastPointZ();
-
- // --------------------------
- // ++ Calculate length of the track
-
- Double_t s = 0.; // length of the track
- if ( AliHLTTPCTransform::GetBFieldValue() == 0. || kappa == 0 )
- s = sqrt ( (xyzL[0] - xyzF[0])*(xyzL[0] - xyzF[0]) + (xyzL[1] - xyzF[1])*(xyzL[1] - xyzF[1]) );
- else {
- // Calculate the length of the track. If it is to flat in in s,z plane use sxy, otherwise use sz
- if (fabs(lambda) > 0.05){
- // length of track calculated out of z
- s = fabs( (xyzL[2] - xyzF[2]) / sin(lambda) ); // length of track calculated out of z
- }
- else {
- Double_t d = (xyzL[0] - xyzF[0])*(xyzL[0] - xyzF[0]) + (xyzL[1] - xyzF[1])*(xyzL[1] - xyzF[1]);
- // length of track calculated out of xy
- s = fabs ( acos( 0.5 * (2 - (d / (radius*radius)))) / ( kappa * cos(lambda) ) );
- }
- }
-
- // -----------------------
- // ++ Apply cuts on tracks
-
- if (nHits < fDisplay->GetCutHits() ) continue;
- if (s < fDisplay->GetCutS() ) continue;
- if (gtrack->GetPsi() < fDisplay->GetCutPsi() ) continue;
- if (lambda < fDisplay->GetCutLambda() ) continue;
- if (gtrack->GetPt() < fDisplay->GetCutPt() && AliHLTTPCTransform::GetBFieldValue() != 0. ) continue;
- if ( AliHLTTPCTransform::GetPadRow((Float_t)xyzF[0]) > fDisplay->GetIncidentPadrow() ) continue;
-
- // ============================================
- // ## ROTATED Track to local coordinates BEGINN
-
- gtrack->Rotate(slice,kTRUE);
-
- Int_t nRes = 0; // number of resiudals
- Double_t totalQ = 0.; // total charge of track
- UInt_t *hitnum = gtrack->GetHitNumbers(); // hist per track
-
- Double_t *resY= new Double_t[nHits]; // Y residuals of every hit
- Double_t *resZ= new Double_t[nHits]; // Z residuals of every hit
-
- Double_t *resYLength= new Double_t[2*nHits]; // length of pad in y direction
-
- Double_t *padrows = new Double_t[nHits];
- Double_t *padrowsLength = new Double_t[2*nHits];
-
- // ---------------------
- // ++ Loop over all hits
-
- for(Int_t h=0; h<nHits; h++){
- UInt_t id=hitnum[h];
- Int_t patch = (id>>22) & 0x7;
- UInt_t pos = id&0x3fffff;
-
- AliHLTTPCSpacePointData *points = fDisplay->GetSpacePointDataPointer(slice,patch);
- if (!points) continue;
-
- Float_t xyzCtmp[3]; // cluster tmp
- Float_t xyzTtmp[3]; // track tmp
-
- // -------------------------
- // ++ Get coordinates of Hit
- xyzCtmp[0] = points[pos].fX;
- xyzCtmp[1] = points[pos].fY;
- xyzCtmp[2] = points[pos].fZ;
- totalQ += points[pos].fCharge;
-
- // ---------------------------------
- // ++ Get X Coordinate of the padrow
-
- Int_t padrow = AliHLTTPCTransform::GetPadRow(points[pos].fX);
- xyzTtmp[0] = gtrack->GetFirstPointX();
-
- // --------------------------------------
- // ++ Check for CrossingPoint with Padrow
- if(gtrack->GetCrossingPoint(padrow,xyzTtmp)) {
-
- // ----------------------
- // ++ Calculate Residuals
-
- Float_t deltaY = ( xyzCtmp[1] - xyzTtmp[1] );
- Float_t deltaZ = ( xyzCtmp[2] - xyzTtmp[2] );
-
- padrows[nRes] = (Double_t) padrow;
- resY[nRes] = (Double_t) deltaY;
- resZ[nRes] = (Double_t) deltaZ;
-
- resYLength[(2*nRes)] = 0.5 * AliHLTTPCTransform::GetPadLength(padrow);
- resYLength[(2*nRes)+1] = -0.5 * AliHLTTPCTransform::GetPadLength(padrow);
- padrowsLength[(2*nRes)] = (Double_t) padrow;
- padrowsLength[(2*nRes)+1] = (Double_t) padrow;
-
- // ---------------------------
- // ++ Fill residuals histogram
-
- fHistallresidualsY->Fill(resY[nRes]);
- fHistallresidualsZ->Fill(resZ[nRes]);
-
- if (resY[nRes] > maxResidualY ) maxResidualY = resY[nRes];
- if (resZ[nRes] > maxResidualZ ) maxResidualZ = resZ[nRes];
- nRes++;
-
- } // END CrossingPoint
- } // END cluster loop
-
- gtrack->Rotate(slice,kFALSE);
-
- // ## ROTATED Track to local coordinates END
- // =========================================
-
- // -------------------------------------
- // ++ Fill Number Hits over track length
-
- Double_t hits_S = nHits / s;
- fHistHits_S->Fill(hits_S);
-
- // --------------------------------
- // ++ Fill Average charge per track
-
- Double_t q_Track = totalQ / nHits;
- fHistQ_Track->Fill(q_Track);
-
- // -------------------------------------
- // ++ Fill total charge per track length
-
- Double_t Q_S = totalQ / s;
- fHistQ_S->Fill(Q_S);
-
- // --------------------------
- // ++ Fill Graphs for 1 track
-
- if (fDisplay->GetSelectTrackSwitch() && fDisplay->GetGlobalTrack(slice) == j){
- // FILL Y RESIDUALS GRAPH
- fGraphresidualsY = new TGraph(nRes-1,padrows,resY);
- fGraphresidualsYLength = new TGraph((2*nRes)-2,padrowsLength,resYLength);
- // FILL Z RESIDUALS GRAPH
- fGraphresidualsZ = new TGraph(nRes-1,padrows,resZ);
- }
-
- // --------------
- // ++ Free Memory
-
- if ( resY ){
- delete [] resY;
- resY = NULL;
- }
- if ( resZ ){
- delete [] resZ;
- resZ = NULL;
- }
- if ( resYLength ){
- delete [] resYLength;
- resYLength = NULL;
- }
- if ( padrows ){
- delete [] padrows;
- padrows = NULL;
- }
- if ( padrowsLength ){
- delete [] padrowsLength;
- padrowsLength = NULL;
- }
-
- } // END track loop
-
- // ----------------------------------------
- // ++ Set Axis Range of residual histograms
-
- fHistallresidualsY->SetAxisRange(-maxResidualY,maxResidualY);
- fHistallresidualsZ->SetAxisRange(-maxResidualZ,maxResidualZ);
-}
-
-//____________________________________________________________________________________________________
-void AliHLTTPCDisplayResiduals::Draw(){
-
- fDisplay->GetCanvasResiduals()->cd();
- fDisplay->GetCanvasResiduals()->Clear();
-
- fDisplay->GetCanvasResiduals()->Divide(1,2);
-
- // ++ Y Residuals
- // ==============
- fDisplay->GetCanvasResiduals()->cd(1);
-
- if (fDisplay->GetSelectTrackSwitch() && fGraphresidualsY){
-
- // -------------------------
- // ++ Y Graph for single track
-
- Char_t title[256];
- sprintf(title,"Y Residuals of Track %d in Slice %d",fDisplay->GetSelectTrack(), fDisplay->GetSelectTrackSlice() );
-
- TMultiGraph *mgY = new TMultiGraph() ;
- mgY->SetBit(kCanDelete);
-
- fGraphresidualsY->GetXaxis()->SetTitle("padrow");
- fGraphresidualsY->GetYaxis()->SetTitle("residuals");
- fGraphresidualsY->GetXaxis()->SetLabelSize(0.02);
- fGraphresidualsY->GetXaxis()->SetTitleSize(0.02);
- fGraphresidualsY->GetYaxis()->SetLabelSize(0.02);
- fGraphresidualsY->GetYaxis()->SetTitleSize(0.02);
-
- fGraphresidualsYLength->SetMarkerColor(2);
- fGraphresidualsYLength->SetMarkerStyle(5);
- fGraphresidualsY->SetMarkerColor(1);
- fGraphresidualsY->SetMarkerStyle(3);
-
- mgY->Add(fGraphresidualsY);
- mgY->Add(fGraphresidualsYLength);
- mgY->SetTitle(title);
- mgY->Draw("AP");
- }
-
- else{
-
- // -------------------------
- // ++ Y Histogram -> global
-
- fHistallresidualsY->SetStats(kFALSE);
- fHistallresidualsY->Draw();
- }
-
- // ++ Z Residuals
- // ==============
- fDisplay->GetCanvasResiduals()->cd(2);
-
- // graph for single track
- if (fDisplay->GetSelectTrackSwitch() && fGraphresidualsZ){
-
- // -------------------------
- // ++ Z Graph for single track
-
- Char_t title[256];
- sprintf(title,"Z Residuals of Track %d in Slice %d",fDisplay->GetSelectTrack(), fDisplay->GetSelectTrackSlice() );
-
- TMultiGraph *mgZ = new TMultiGraph();
- mgZ->SetBit(kCanDelete);
-
- fGraphresidualsZ->SetTitle(title);
- fGraphresidualsZ->GetXaxis()->SetTitle("padrow");
- fGraphresidualsZ->GetYaxis()->SetTitle("residuals");
- fGraphresidualsZ->GetXaxis()->SetLabelSize(0.02);
- fGraphresidualsZ->GetXaxis()->SetTitleSize(0.02);
- fGraphresidualsZ->GetYaxis()->SetLabelSize(0.02);
- fGraphresidualsZ->GetYaxis()->SetTitleSize(0.02);
-
- mgZ->Add(fGraphresidualsZ);
- mgZ->SetTitle(title);
- mgZ->Draw("A*");
- }
-
- // -------------------------
- // ++ Z Histogram -> global
-
- else{
- fHistallresidualsZ->SetStats(kFALSE);
- fHistallresidualsZ->Draw();
- }
-
- fDisplay->GetCanvasResiduals()->Modified();
- fDisplay->GetCanvasResiduals()->Update();
-
- // -------------------------------------
- // ++ Draw Number Hits over track length
-
- fDisplay->GetCanvasHits_S()->cd ();
- fDisplay->GetCanvasHits_S()->Clear();
-
- fHistHits_S->Draw();
-
- fDisplay->GetCanvasHits_S()->Modified();
- fDisplay->GetCanvasHits_S()->Update();
-
- // --------------------------------
- // ++ Draw Average charge per track
-
- fDisplay->GetCanvasQ_Track()->cd();
- fDisplay->GetCanvasQ_Track()->Clear();
-
- fHistQ_Track->Draw();
-
- fDisplay->GetCanvasQ_Track()->Modified();
- fDisplay->GetCanvasQ_Track()->Update();
-
- // -------------------------------------
- // ++ Draw total charge per track length
-
- fDisplay->GetCanvasQ_S()->cd();
- fDisplay->GetCanvasQ_S()->Clear();
-
- fHistQ_S->Draw();
-
- fDisplay->GetCanvasQ_S()->Modified();
- fDisplay->GetCanvasQ_S()->Update();
-}
-
+++ /dev/null
-// XEmacs -*-C++-*-
-// $Id$
-
-#ifndef ALIHLTTPCDISPLAYRESIDUALS_H
-#define ALIHLTTPCDISPLAYRESIDUALS_H
-/** \class AliHLTTPCDisplayResiduals
-<pre>
-//_____________________________________________________________
-// AliHLTTPCDisplayResiduals
-//
-// Display class for the HLT TPC-Residuals events.
-</pre>
-*/
-// Author: Jochen Thaeder <mailto:thaeder@kip.uni-heidelberg.de>
-//*-- Copyright © ALICE HLT Group
-
-#include <TH1.h>
-#include <TGraph.h>
-#include <AliHLTTPCDisplayMain.h>
-
-class AliHLTTPCDisplayResiduals {
-
- public:
- AliHLTTPCDisplayResiduals(AliHLTTPCDisplayMain* display) ;
- virtual ~AliHLTTPCDisplayResiduals();
-
- void Draw();
- void Reset();
- void Fill();
- void Save();
- private:
- AliHLTTPCDisplayResiduals (const AliHLTTPCDisplayResiduals&);
- AliHLTTPCDisplayResiduals& operator=(const AliHLTTPCDisplayResiduals&);
-
- AliHLTTPCDisplayMain* fDisplay;
-
- TH1F *fHistallresidualsY; // histogram for all Y residuals
- TH1F *fHistallresidualsZ; // histogram for all Z residuals
-
- TH1F * fHistHits_S; // histogram for Hits per track length
- TH1F * fHistQ_Track; // histogram for Charge per track
- TH1F * fHistQ_S; // histogram for Charge per track length
-
- TGraph *fGraphresidualsY; // graph of the Y residuals for one track
- TGraph *fGraphresidualsZ; // graph of the Z residuals for one track
- TGraph *fGraphresidualsYLength; // graph of the border of Y residuals for one track
-
- ClassDef(AliHLTTPCDisplayResiduals,0)
-};
-
-#endif // ALIHLTTPCDISPLAYRESIDUALS_H
+++ /dev/null
-/*
- * Requirements: Running HLT Analysis Framework
- * with TCP-Dump Subscribe listining on
- * - Cluster: Hostname, Port
- * - Tracker: Hostname, Port
- * - Controlled FilePublisher: Hostname, Port
- * Usage :
- *
- * (1) USE the StartDisplayMacro.C , by adding
- * gROOT->Macro("StartDisplayMacro.C");
- * to the rootlogon.C file
- *
- * (2) IN StartDisplayMacro.C subject to change are:
- * ODH_INIT("<PATH TO GEO FILE>", "<PATH TO LIBRARIES>");
- * - <PATH TO LIBRARIES> : The path where libHOMERReader_ROOT.so and libHOMERReader.so are located.
- * - <PATH TO GEO FILE> : The path where alice.geom is located.
- * ODH_CONNECT("<NODE>",<PORT>,"<NODE>",<PORT>,"<NODE>",<PORT>);
- * - <NODE> : The port on which the TCPDumpSubscriber is running.
- * - <PORT> : The port specified in the TCPDumpSubscriber in the XML configuration file.
- * use first pair for Cluster Data, second for Tracks Data and third for Raw Data...
- * but it doesn't matter if you change it.
- *
- *
- * When starting root, Display and Control Bar will pop up.
- * Nothing will be displayed at the beginning.
- * - In order to display the geometry. Click <Show Geometry> first.
- * Different sets of sectors can be selected also.
- * - In order to dislpay event's click <Next clusters>, <Next tracks> or <Next clusters and tracks>
- * Displaying PadRow's:
- * - as Histogram:
- * once : <Setup PadRow 20 with Histogram>
- * next event : <Display PadRow>
- * - in Geometry:
- * once : <Setup PadRow 20 with Geometry>
- * next event : <Display PadRow>, <Display PadRow with Clusters>, <Display PadRow with Tracks> or <Display PadRow with Clusters and Tracks>
- */
-
-#include "AliHLTDataTypes.h"
-#include "AliHLTTPCSpacePointData.h"
-#include "AliHLTTPCClusterDataFormat.h"
-#include "AliHLTTPCTrackletDataFormat.h"
-#include "AliHLTTPCDefinitions.h"
-#include "AliHLTTPCDigitReader.h"
-//#include "AliHLTTPCTrackArray.h"
-
-// include because of connecttofile()
-#include <stdio.h>
-#include <stdlib.h>
-//#include <sys/time.h>
-//#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <unistd.h>
-#include <string.h>
-#include <errno.h>
-#include <vector>
-// #include "MLUCString.hpp"
-// #include "MLUCCmdlineParser.hpp"
-// #include "MLUCDynamicLibrary.hpp"
-#include "AliHLTDataTypes.h"
-#include "AliHLT_C_Component_WrapperInterface.h"
-
-
-void* fODHReader; /* really HOMERReader* */
-void* fODHDisplay; /* really AliHLTTPCDisplay* */
-
-Int_t fTracksPerSlice[36]; // TrackCount per slice
-
-Float_t fTheta;
-Float_t fPhi;
-
-//vector<QString> fHostnames;
-//vector<QString> fPorts;
-
-class AliHLTTPCTrackArray;
-AliHLTTPCTrackArray* fTrackArray;
-
-TCanvas *fCanvasPad;
-TCanvas *fCanvasPadRow;
-TCanvas *fCanvas3D;
-TCanvas *fCanvasCharge;
-TCanvas *fCanvasResiduals;
-
-/* Dummy function to work around the problem that the interpreter does not load the first function properly... */
-int ODH_Dummy() {
- return 0;
-}
-
-// ########################################################################################################################################
-int HLT_OnlineDisplay_HOMER() {
- fODHDisplay = NULL;
- fODHReader = NULL;
- fTrackArray = NULL;
- fTheta = 90.;
- fPhi = 0.;
-
- fCanvasPad = NULL;
- fCanvasPadRow = NULL;
- fCanvas3D = NULL;
- fCanvasCharge = NULL;
- fCanvasResiduals = NULL;
- return 0;
-}
-
-// ########################################################################################################################################
-int ODH_Init() {
- // --- Load LIBS
- cout << "Loading ROOT libraries (ROOTSYS has to be set)" << endl;
- gSystem->Load("libPhysics");
- gSystem->Load("libEG");
- gSystem->Load("libGeom");
- gSystem->Load("libVMC");
- gSystem->Load("libGpad");
-
- cout << "Loading ALICE TPC libraries (ALICE_ROOT & ALICE_TARGET have to be set)" << endl;
- gSystem->Load("libESD");
- gSystem->Load("libSTEER");
- // AliRoot versions v4-04-Release or higher have a changed RAW library layout
- // TODO: check this at configure time
-#ifndef ALIRAW_4_04
- gSystem->Load("libRAWData");
-#else //ALIRAW_4_04
- gSystem->Load("libRAWDatabase");
- gSystem->Load("libRAWDatarec");
-#endif //ALIRAW_4_04
-// gSystem->Load("libCONTAINERS");
-// if(gSystem->Load("libTPC")!=0) {
- gSystem->Load("libTPCbase");
- gSystem->Load("libTPCrec");
- gSystem->Load("libTPCsim");
- gSystem->Load("libTPCfast");
-
- cout << "Loading HLT libraries (ALIHLT_LIBDIR has to be set)" << endl;
- gSystem->Load("$(ALIHLT_LIBDIR)/libHLTbase.so");
- gSystem->Load("$(ALIHLT_LIBDIR)/libAliHLTTPC.so");
-
- cout << "Loading HOMER library" << endl;
- gSystem->Load("${ALIHLT_DC_DIR}/lib/Linux-i686/libHOMERReader_ROOT.so" );
-
- // --- Create DISPLAY
- cout << "Creating display" << endl;
- fCanvasPad = new TCanvas("fCanvasPad","HLT Online Display - Pad Display",900,900);
- fCanvasPad->Divide(1,3);
- fCanvasPadRow = new TCanvas("fCanvasPadRow","HLT Online Display - PadRow Display",900,900);
- fCanvas3D = new TCanvas("fCanvas3D","HLT Online Display - 3D Display",900,900);
- fCanvasCharge = new TCanvas("fCanvasCharge","HLT Online Display - Charge Display",900,900);
- fCanvasResiduals = new TCanvas("fCanvasResiduals","HLT Online Display - Residuals Display",900,900);
-
- fTheta = 90.;
- fPhi = 0.;
-
- // --- Load Geometry
- TString geoPath;
-
- Char_t * geometryPath = getenv("ALIHLT_DC_DIR");
- Char_t * geometryFile = "alice.geom";
-
- if (geometryPath) {
- geoPath = geometryPath;
- geoPath += "/share/TPC-OnlineDisplayHOMER";
- }
- else geoPath = ".";
-
- geoPath += "/";
- geoPath += geometryFile;
-
- AliHLTTPCDisplay* display = new AliHLTTPCDisplay( (Char_t*)geoPath.Data() );
-
- fODHDisplay = (void*)display;
-
- display->SetupHist();
-
- return 0;
-}
-
-// ########################################################################################################################################
-int ODH_Connect( char* hostname_clusters, short port_clusters, char* hostname_tracks, short port_tracks, char* hostname_raw, short port_raw ) {
- HOMERReader* reader;
- char* hostnames[] = { "NULL", "NULL","NULL" };
- unsigned short ports[] = { 0, 0, 0 };
- int cnt=0;
- if ( hostname_clusters ){
- hostnames[cnt] = hostname_clusters;
- ports[cnt] = port_clusters;
- cnt++;
- }
- if ( hostname_tracks ){
- hostnames[cnt] = hostname_tracks;
- ports[cnt] = port_tracks;
- cnt++;
- }
- if ( hostname_raw ){
- hostnames[cnt] = hostname_raw;
- ports[cnt] = port_raw;
- cnt++;
- }
-
- reader = new HOMERReader( cnt, hostnames, ports );
- int ret;
- ret=reader->GetConnectionStatus();
- if ( ret ) {
- int ndx = reader->GetErrorConnectionNdx();
- if ( ndx < cnt ) {
- printf( "Error establishing connection to TCP source %s:%hu: %s (%d)\n",
- hostnames[ndx], ports[ndx],
- strerror(ret), ret );
- }
- else {
- printf( "Error establishing connection to unknown source with index %d: %s (%d)\n",
- ndx,
- strerror(ret), ret );
- }
- delete reader;
- reader = NULL;
- }
- fODHReader = (void*)reader;
-
- printf( "CONNECTED\n");
- return ret;
-}
-
-// ########################################################################################################################################
-Int_t ODH_Disconnect() {
- if ( !fODHReader )
- return 0;
- HOMERReader* reader = (HOMERReader*)fODHReader;
- delete reader;
- fODHReader = NULL;
-
- if ( fTrackArray ) delete fTrackArray;
- fTrackArray = NULL;
-
- return 0;
-}
-
-
-// ########################################################################################################################################
-Int_t ODH_DisplayEvent(Bool_t nextSwitch=kTRUE, Bool_t threeDSwitch=kTRUE, Bool_t PadRowSwitch= kTRUE){
-
- if ( !fODHReader || !fODHDisplay ) {
- printf( "ERROR no READER or DISPLAY" );
- return -1;
- }
-
- HOMERReader* reader = (HOMERReader*)fODHReader;
- AliHLTTPCDisplay* display = (AliHLTTPCDisplay*)fODHDisplay;
-
- // -- input datatypes , reverse
- char* spptID="SRETSULC";
- char* trkID = "SGESKART";
- char* padrowID = "KPWR_LDD";
- Int_t ret;
-
- if (nextSwitch) {
- ret = reader->ReadNextEvent();
-
- if ( ret ) {
- int ndx = reader->GetErrorConnectionNdx();
- printf( "------------ TRY AGAIN --------------->Error reading event from source %d: %s (%d)\n", ndx, strerror(ret), ret );
- return ret;
- }
-
- unsigned long blockCnt = reader->GetBlockCnt();
- printf( "Event 0x%016LX (%Lu) with %lu blocks\n", (ULong64_t)reader->GetEventID(), (ULong64_t)reader->GetEventID(), blockCnt );
-
- 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 = reader->GetBlockDataType( i );
- void *tmp21 = tmp2;
- ULong_t* tmp22 = (ULong_t*)tmp21;
- *tmp22 = reader->GetBlockDataOrigin( i );
- printf( "Block %lu length: %lu - type: %s - origin: %s\n",i, reader->GetBlockDataLength( i ), tmp1, tmp2 );
- }
-
- for(Int_t ii=0;ii<36;ii++) fTracksPerSlice[ii] = 0;
- }
-
- //--------------------------------------------------------------------------------------------
- // READ CLUSTER DATA
- //--------------------------------------------------------------------------------------------
- if (nextSwitch) {
- unsigned long blk = reader->FindBlockNdx( spptID, " CPT",0xFFFFFFFF );
-
- while ( blk != ~(unsigned long)0 ) {
- printf( "Found clusters block %lu\n", blk );
- const AliHLTTPCClusterData* clusterData = (const AliHLTTPCClusterData*)reader->GetBlockData( blk );
- if ( !clusterData ) {
- printf( "No track data for block %lu\n", blk );
- continue;
- }
-
- ULong_t spec = reader->GetBlockDataSpec( blk );
- Int_t patch = AliHLTTPCDefinitions::GetMinPatchNr( spec );
- Int_t slice = AliHLTTPCDefinitions::GetMinSliceNr( spec );
- printf( "%lu Clusters found for slice %u - patch %u\n", clusterData->fSpacePointCnt, slice, patch );
-
- void* tmp30 = (void*)clusterData;
- Byte_t* tmp31 = (Byte_t*)tmp30;
- unsigned long offset;
- offset = sizeof(clusterData->fSpacePointCnt);
- if ( offset <= reader->GetBlockTypeAlignment( blk, 1 ) ) offset = reader->GetBlockTypeAlignment( blk, 1 );
- tmp31 += offset;
- tmp30 = tmp31;
- AliHLTTPCSpacePointData* tmp32 = (AliHLTTPCSpacePointData*)tmp30;
-
- display->SetupCluster( slice, patch, clusterData->fSpacePointCnt, tmp32 );
-
- blk = reader->FindBlockNdx( spptID, " CPT", 0xFFFFFFFF, blk+1 );
- }
- }
- //--------------------------------------------------------------------------------------------
- // READ TRACKS
- //--------------------------------------------------------------------------------------------
- if (nextSwitch) {
- if ( fTrackArray ) delete fTrackArray;
- fTrackArray = new AliHLTTPCTrackArray;
-
- unsigned long blk = reader->FindBlockNdx( trkID, " CPT", 0xFFFFFFFF );
-
- while ( blk != ~(unsigned long)0 ) {
- printf( "Found tracks in block %lu\n", blk );
- const AliHLTTPCTrackletData* trackData = (const AliHLTTPCTrackletData*)reader->GetBlockData( blk );
- if ( !trackData ) {
- printf( "No track data for block %lu\n", blk );
- continue;
- }
-
- ULong_t spec = reader->GetBlockDataSpec( blk );
- Int_t patchmin = AliHLTTPCDefinitions::GetMinPatchNr( spec );
- Int_t patchmax = AliHLTTPCDefinitions::GetMaxPatchNr( spec );
- Int_t slice = AliHLTTPCDefinitions::GetMinSliceNr( spec );
- printf( "%lu tracks found for slice %u - patch %u-%u\n", trackData->fTrackletCnt, slice, patchmin, patchmax );
-
- fTracksPerSlice[slice] = trackData->fTrackletCnt;
-
- void* tmp40 = (void*)trackData;
- Byte_t* tmp41 = (Byte_t*)tmp40;
- unsigned long offset;
- offset = sizeof(trackData->fTrackletCnt);
- if ( offset <= reader->GetBlockTypeAlignment( blk, 1 ) ) offset = reader->GetBlockTypeAlignment( blk, 1 );
- tmp41 += offset;
- tmp40 = tmp41;
- AliHLTTPCTrackSegmentData* tmp42 = (AliHLTTPCTrackSegmentData*)tmp40;
-
- fTrackArray->FillTracks( trackData->fTrackletCnt, tmp42, slice );
-
- blk = reader->FindBlockNdx( trkID, " CPT", 0xFFFFFFFF, blk+1 );
- }
-
- display->SetupTracks( fTrackArray );
- }
-
- //--------------------------------------------------------------------------------------------
- // READ RAW DATA for PADROW HISTOGRAM
- //--------------------------------------------------------------------------------------------
- if (PadRowSwitch) {
- AliHLTUInt8_t padslice = (AliHLTUInt8_t) display->GetSlicePadRow();
- Int_t padrow = display->GetPadRow();
- Int_t patch = AliHLTTPCTransform::GetPatch(padrow);
- Int_t maxpatch = patch;
-
- display->ResetHistPadRow();
-
- if (padrow == 30 || padrow == 90 || padrow == 139) maxpatch++;
-
- for (Int_t tpatch=patch;tpatch <= maxpatch;tpatch++) {
- unsigned long blk;
- AliHLTUInt32_t padrowSpec = AliHLTTPCDefinitions::EncodeDataSpecification( padslice, padslice,(AliHLTUInt8_t) tpatch,(AliHLTUInt8_t) tpatch );
-
- // READ RAW DATA BLOCK - READ CLUSTERS BLOCK
- blk = reader->FindBlockNdx( padrowID, " CPT", padrowSpec );
-
- if ( ~(unsigned long)0 != blk ){
- printf( "Raw Data found for slice %u/patch %u\n", padslice, tpatch );
- unsigned long rawDataBlock = (unsigned long) reader->GetBlockData( blk );
- unsigned long rawDataLen = reader->GetBlockDataLength( blk );
-
- display->FillPadRow( tpatch, rawDataBlock, rawDataLen);
- }
- }
-
- if (fCanvasPadRow){
- fCanvasPadRow->cd();
- display->DrawHistPadRow();
- fCanvasPadRow->Update();
- }
-
- if (fCanvasPad){
- fCanvasPad->cd(1);
- display->DrawHistPad1();
- fCanvasPad->GetCanvas()->Update();
-
- fCanvasPad->cd(2);
- display->DrawHistPad2();
- fCanvasPad->GetCanvas()->Update();
-
- fCanvasPad->cd(3);
- display->DrawHistPad3();
- fCanvasPad->GetCanvas()->Update();
- }
- }
-
- //--------------------------------------------------------------------------------------------
- // RESET HISTOGRAMS
- //--------------------------------------------------------------------------------------------
- if ( display->Get3DSwitchCluster() ) display->ResetHistCharge();
- if ( display->Get3DSwitchTracks() ) display->ResetHistResiduals();
-
- //--------------------------------------------------------------------------------------------
- // DRAW 3D
- //--------------------------------------------------------------------------------------------
- if ( (threeDSwitch || (PadRowSwitch && display->Get3DSwitchPadRow())) && fCanvas3D ){
-
- fCanvas3D->cd();
- fCanvas3D->Clear();
- fCanvas3D->SetFillColor(display->GetBackColor());
-
- if ( !display->GetKeepView() ){
- fCanvas3D->SetTheta(fTheta);
- fCanvas3D->SetPhi(fPhi);
- }
-
- display->Draw3D();
-
- fCanvas3D->Modified();
- fCanvas3D->Update();
- }
-
- //--------------------------------------------------------------------------------------------
- // DRAW RESIDUALS
- //--------------------------------------------------------------------------------------------
- if ( display->Get3DSwitchTracks() && fCanvasResiduals) {
- fCanvasResiduals->cd();
- fCanvasResiduals->Clear();
- fCanvasResiduals->Divide(1,2);
- fCanvasResiduals->cd(1);
- display->DrawHistResiduals(kTRUE);
- fCanvasResiduals->cd(2);
- display->DrawHistResiduals(kFALSE);
- fCanvasResiduals->Update();
- }
- //--------------------------------------------------------------------------------------------
- // DRAW CHARGE
- //--------------------------------------------------------------------------------------------
- if ( display->Get3DSwitchCluster() && fCanvasCharge != NULL) {
- fCanvasCharge->cd();
- fCanvasCharge->Clear();
-
- display->DrawHistCharge();
-
- fCanvasCharge->Update();
- }
-
- return 0;
-}
-
-// ####################################################################################################
-// SETTER - minor functions
-// ####################################################################################################
-Int_t ODH_SetSliceRange(){
- // -- sets all Slices
- if (!fODHDisplay ) return -1;
- AliHLTTPCDisplay* display = (AliHLTTPCDisplay*)fODHDisplay;
-
- display->SetSlices();
- fTheta = 90.;
-
- ODH_DisplayEvent(kFALSE,kTRUE,kFALSE);
- return 0;
-}
-// °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
-Int_t ODH_SetSliceRange(Int_t slice){
- // -- sets one slice
- if (!fODHDisplay ) return -1;
- AliHLTTPCDisplay* display = (AliHLTTPCDisplay*)fODHDisplay;
-
- display->SetSlices(slice);
- fTheta = 0.;
-
- ODH_DisplayEvent(kFALSE,kTRUE,kFALSE);
- return 0;
-}
-// °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
-Int_t ODH_SetSliceRange(Int_t minslice,Int_t maxslice){
- // -- sets a range of Slices
- if (!fODHDisplay ) return -1;
- AliHLTTPCDisplay* display = (AliHLTTPCDisplay*)fODHDisplay;
-
- display->SetSlices(minslice,maxslice);
- fTheta = 90.;
-
- ODH_DisplayEvent(kFALSE,kTRUE,kFALSE);
- return 0;
-}
-// °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
-Int_t ODH_SetSlicePair(Int_t slice){
- // -- sets a pair of slices
- if (!fODHDisplay ) return -1;
- AliHLTTPCDisplay* display = (AliHLTTPCDisplay*)fODHDisplay;
-
- display->SetSlicesPair(slice);
- fTheta = 90.;
-
- ODH_DisplayEvent(kFALSE,kTRUE,kFALSE);
- return 0;
-}
-// °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
-Int_t ODH_SetSlicePair(Int_t minslice, Int_t maxslice){
- // -- sets a pair of slices
- if (!fODHDisplay ) return -1;
- AliHLTTPCDisplay* display = (AliHLTTPCDisplay*)fODHDisplay;
-
- display->SetSlicesPair(minslice,maxslice);
- fTheta = 90.;
-
- ODH_DisplayEvent(kFALSE,kTRUE,kFALSE);
- return 0;
-}
-// °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
-Int_t ODH_SetCluster(Bool_t used=kTRUE, Bool_t unused=kTRUE){
- // -- set used/unuse/all cluster
- if ( !fODHDisplay ) return -1;
- AliHLTTPCDisplay* display = (AliHLTTPCDisplay*)fODHDisplay;
-
- // ALL Cluster = 0 | USED Cluster = 1 | UNUSED Cluster = 2
- if (used && unused) display->SetSelectCluster(0);
- else if (used) display->SetSelectCluster(1);
- else if (unused) display->SetSelectCluster(2);
-
- ODH_DisplayEvent(kFALSE,kTRUE,kFALSE);
- return 0;
-}
-// °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
-Int_t ODH_SetInvert(){
- // -- set invert 3D display
- if ( !fODHDisplay ) return -1;
- AliHLTTPCDisplay* display = (AliHLTTPCDisplay*)fODHDisplay;
-
- display->SetInvert();
-
- ODH_DisplayEvent(kFALSE,kTRUE,kFALSE);
- return 0;
-}
-// °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
-Int_t ODH_SetKeepView(Bool_t keepview){
- // -- keep angle view
- if ( !fODHDisplay ) return -1;
- AliHLTTPCDisplay* display = (AliHLTTPCDisplay*)fODHDisplay;
-
- if (keepview) display->SetKeepView(kTRUE);
- else display->SetKeepView(kFALSE);
-
- return 0;
-}
-// °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
-Int_t ODH_SetPadRow(Int_t slice, Int_t padrow, Int_t pad = 0) {
- // -- set padrow and pad histograms
- if (!fODHDisplay ) return -1;
- AliHLTTPCDisplay* display = (AliHLTTPCDisplay*)fODHDisplay;
-
- if( padrow < 0 || padrow > 158){
- printf("Padrow %d out of range, has to be in [0,158].",padrow);
- return -2;
- }
-
- display->SetSlicePadRow(slice);
- display->SetPadRow(padrow);
- display->SetHistPadRowAxis();
- display->SetPad(pad);
-
- ODH_DisplayEvent(kFALSE,kTRUE,kTRUE);
- return 0;
-}
-// °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
-Int_t ODH_SetSelectTrack(Bool_t trackswitch=kFALSE, Int_t slice=0, Int_t track=0){
- // -- trackswitch : turn on /off of single track
- // -- slice : select slice for single track
- // -- track :select single track in slice
-
- if (!fODHDisplay ) return -1;
- AliHLTTPCDisplay* display = (AliHLTTPCDisplay*)fODHDisplay;
-
- display->SetSelectTrackSwitch(trackswitch);
- if(!trackswitch) display->SetSelectTrack(0);
- else {
- if ( track < 0 || track > fTracksPerSlice[slice]) {
- printf ("No Track %d, Maximum of Tracks in Slice %d is %d ! ",track,slice,fTracksPerSlice[slice] );
- return -2;
- }
-
- display->SetSelectTrackSlice(slice);
- display->SetSelectTrack(track);
- }
-
- ODH_DisplayEvent(kFALSE,kTRUE,kFALSE);
- return 0;
-}
-// °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
-Int_t ODH_SetTrack(Int_t minhits = 0, Float_t ptthreshold = 0.){
- // -- set track properties
- if (!fODHDisplay ) return -1;
- AliHLTTPCDisplay* display = (AliHLTTPCDisplay*)fODHDisplay;
-
- display->SetMinHits(minhits);
- display->SetPtThreshold(ptthreshold );
- return 0;
-}
-// °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
-Int_t ODH_Set3D(Bool_t tracks=kFALSE, Bool_t cluster=kFALSE, Bool_t padrow=kFALSE, Bool_t geometry=kFALSE){
- // -- set 3D Display
- if (!fODHDisplay ) return -1;
- AliHLTTPCDisplay* display = (AliHLTTPCDisplay*)fODHDisplay;
-
- if (padrowCheckBox->isChecked()) setPadRow();
-
- display->SetSwitches(tracks, cluster, padrow, geometry);
-
- if (display->Get3DSwitchPadRow()) ODH_DisplayEvent(kFALSE,kTRUE,kTRUE);
- else ODH_DisplayEvent(kFALSE,kTRUE,kFALSE);
- return 0;
-}
-// °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
-Int_t ODH_Set3DTracks(Bool_t on=kFALSE){
- // -- Set 3D tracks
- if (!fODHDisplay ) return -1;
- AliHLTTPCDisplay* display = (AliHLTTPCDisplay*)fODHDisplay;
-
- display->Set3DSwitchTracks(on);
-
- ODH_DisplayEvent(kFALSE,kTRUE,kFALSE);
- return 0;
-}
-// °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
-Int_t ODH_Set3DCluster(Bool_t on=kFALSE){
- // -- Set 3D cluster
- if (!fODHDisplay ) return -1;
- AliHLTTPCDisplay* display = (AliHLTTPCDisplay*)fODHDisplay;
-
- display->Set3DSwitchCluster(on);
-
- ODH_DisplayEvent(kFALSE,kTRUE,kFALSE);
- return 0;
-}
-// °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
-Int_t ODH_Set3DPadRow(Bool_t on=kFALSE){
- // -- Set 3D padrow
- if (!fODHDisplay ) return -1;
- AliHLTTPCDisplay* display = (AliHLTTPCDisplay*)fODHDisplay;
-
- display->Set3DSwitchPadRow(on);
-
- ODH_DisplayEvent(kFALSE,kTRUE,kFALSE);
- return 0;
-}
-// °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
-Int_t ODH_Set3DGeometry(Bool_t on=kFALSE){
- // -- Set 3D geometry
- if (!fODHDisplay ) return -1;
- AliHLTTPCDisplay* display = (AliHLTTPCDisplay*)fODHDisplay;
-
- display->Set3DSwitchGeometry(on);
-
- ODH_DisplayEvent(kFALSE,kTRUE,kFALSE);
- return 0;
-}
-
-
+++ /dev/null
-# $Id$
-# Makefile template for the Alice HLT TPC display library
-
-MODULE = AliHLTTPCDisplay
-
-AM_CPPFLAGS = @ALIROOT_CPPFLAGS@ \
- @HOMER_CPPFLAGS@ \
- -I$(ALICE_ROOT)/TPC \
- -I$(top_srcdir)/BASE \
- -I$(srcdir)/../
-
-# library definition
-lib_LTLIBRARIES = libAliHLTTPCDisplay.la
-
-LIBRARY_VERSION = '2:0:0'
-
-# library sources
-libAliHLTTPCDisplay_la_SOURCES = AliHLTTPCDisplayMain.cxx \
- AliHLTTPCDisplay.cxx \
- AliHLTTPCDisplay3D.cxx \
- AliHLTTPCDisplayCharge.cxx \
- AliHLTTPCDisplayFront.cxx \
- AliHLTTPCDisplayPad.cxx \
- AliHLTTPCDisplayPadRow.cxx \
- AliHLTTPCDisplayResiduals.cxx
-
-DEFAULT_GEOMETRY = alice.geom
-libAliHLTTPCDisplay_la_DATA = $(srcdir)/$(DEFAULT_GEOMETRY)
-libAliHLTTPCDisplay_ladir = $(pkgdatadir)
-AM_CPPFLAGS += -DDEFAULT_GEOMETRY \
- -DHOMERREADER_HEADER=\"@HOMERREADER_HEADER@\"
-
-# class header files, the link definition for the root dictionary
-# will be created from the names of the header files
-CLASS_HDRS = AliHLTTPCDisplayMain.h \
- AliHLTTPCDisplay.h \
- AliHLTTPCDisplay3D.h \
- AliHLTTPCDisplayCharge.h \
- AliHLTTPCDisplayFront.h \
- AliHLTTPCDisplayPad.h \
- AliHLTTPCDisplayPadRow.h \
- AliHLTTPCDisplayResiduals.h
-
-
-
-pkginclude_HEADERS = $(CLASS_HDRS)
-
-# version info for the library
-libAliHLTTPCDisplay_la_LIBADD = @HOMER_INBUILT_LIB@ \
- $(top_builddir)/TPCLib/libAliHLTTPC.la
-libAliHLTTPCDisplay_la_LDFLAGS = -L@ROOTLIBDIR@ \
- @ROOTLIBS@ \
- @ALIROOT_LDFLAGS@ \
- @ALIROOT_LIBS@ \
- @HOMER_LDFLAGS@ \
- @HOMER_LIBS@ \
- -version-info $(LIBRARY_VERSION)
-
-# automatic generation of data and time of library build
-COMPILE_INFO = AliHLTTPCDisplayCompileInfo.cxx
-
-# set the file name for the generated root dictionary
-DICTCPP = AliHLTTPCDisplay-DICT.cxx
-# add additional include files which are necessary for the compilation of the
-# dictionary files and which are not part of the CLASS_HDRS
-DICTINCLUDE = AliHLTTPCSpacePointData.h \
- AliHLTTPCTrackArray.h
-nodist_libAliHLTTPCDisplay_la_SOURCES = $(COMPILE_INFO) \
- $(DICTCPP)
-
-MODULE_DHDR =
-
-EXTRA_DIST = $(libAliHLTTPCDisplay_la_DATA)
-CLEANFILES = $(COMPILE_INFO)
-
-include $(top_srcdir)/make.dict
-
-$(COMPILE_INFO): $(libAliHLTTPCDisplay_la_SOURCES) $(pkginclude_HEADERS) $(noinst_HEADERS) Makefile.am
- @echo '//automatically generated compilation info' > $@
- @echo '//!!! DO NOT EDIT THIS FILE !!!' >> $@
- @echo '//add changes in Makefile.am' >> $@
- @echo '#include <iostream>' >> $@
- @echo 'extern "C" void CompileInfo(const char*& date, const char*& time)' >> $@
- @echo '{date=__DATE__; time=__TIME__; return;}' >> $@
- @echo >> $@
- @echo 'extern "C" const char* __lib$(MODULE)Properties=""' >> $@
- @echo '#if defined(HAVE_HOMERREADER) ' >> $@
- @echo '"HOMER"' >> $@
- @echo '#endif // defined(HAVE_HOMERREADER)' >> $@
- @echo ';' >> $@
- @echo >> $@
- @echo 'void __init()'>> $@
- @echo '{std::cout << "lib$(MODULE) build on " << __DATE__ << " - " << __TIME__ << std::endl;}'>> $@
- @echo >> $@
- @echo 'const char* gDefaultGeometry="$(libAliHLTTPCDisplay_ladir)/$(DEFAULT_GEOMETRY)"; '>> $@
- @echo >> $@
+++ /dev/null
-/************************************************************************
-**
-** This file is property of and copyright by the Computer Science/Computer
-** Engineering Group, Kirchhoff Institute for Physics, Ruprecht-Karls-
-** University, Heidelberg, Germany, 2005
-** This file has been written by Jochen Thaeder,
-** thaeder@kip.uni-heidelberg.de
-**
-**
-** See the file license.txt for details regarding usage, modification,
-** distribution and warranty.
-** Important: This file is provided without any warranty, including
-** fitness for any particular purpose.
-**
-**
-** Newer versions of this file's package will be made available from
-** http://www.kip.uni-heidelberg.de/ti/HLT/
-** or the corresponding page of the Heidelberg Alice HLT group.
-**
-*************************************************************************/
-
-// *****************************************************************
-// * USEAGE in ROOT
-// *****************************************************************
-// * -->LOAD the macro first:
-// * .L ("HLT-OnlineDisplay-HOMER.C");
-// *
-// * --> use with ".p FUNCTION;" OR here as macro function
-// * ODH_Init();
-// * ODH_Connect(Char_t *hostname1,Int_t port1,Char_t *hostname2,Int_t port2,Char_t *hostname3,Int_t port3);
-// * ODH_DisplayEvent(); // Display NextEvent
-// *
-// * ODH_SetSliceRange(); // Sets Slice: ALL
-// * ODH_SetSliceRange(Int_t slice); // Sets Slice: "slice"
-// * ODH_SetSliceRange(Int_t minslice, Int_t maxslice); // Sets Slice: "minslice" to "maxslice"
-// * ODH_SetSlicePair(Int_t slice); // Sets Slice: "slice" and "slice"+9
-// * ODH_SetSlicePair(Int_t minslice, Int_t maxslice); // Sets Slice: ["minslice" to "maxslice"] and ["minslice"+9 to "maxslice"+9]
-// *
-// * ODH_SetCluster(Bool_t used, Bool_t unused); // Sets Cluster: used, unused, all(= used && unused)
-// *
-// * ODH_SetInvert(); // Invert 3D Display
-// * ODH_SetKeepView(Bool_t keepview); // Keep 3D View
-// *
-// * ODH_SetPadRow(Int_t slice, Int_t padrow, Int_t pad); // Set PadRow "padrow" within Slice "slice" and Pad "pad"(=0 per default)
-// *
-// * ODH_SetSelectTrack(Bool_t switch, Int_t slice, Int_t track); // with switch=true :Select Single Track "track" in Slice "slice"
-// * // turn off: ODH_SetSelectTrack();
-// *
-// * ODH_SetTrack(Int_t minhits, Float_t ptthreshold); // Sets Cuts in order to display tracks, both default is 0
-// *
-// * ODH_Set3D(Bool_t tracks, Bool_t cluster, Bool_t padrow, Bool_t geometry); // Switches for the 3D Display
-// * ODH_Set3DTracks(Bool_t on); // Set 3D tracks, default is off
-// * ODH_Set3DCluster(Bool_t on); // Set 3D cluster, default is off
-// * ODH_Set3DPadRow(Bool_t on); // Set 3D padrow, default is off
-// * ODH_Set3DGeometry(Bool_t on); // Set 3D geometry, default is off
-// *
-// *****************************************************************
-{
-
- gROOT->LoadMacro("HLT-OnlineDisplay-HOMER.C");
-
- // --- LOAD DISPLAY FUNCTIONS
- HLT_OnlineDisplay_HOMER();
-
- // --- INITIALIZE DISPLAY, LOAD GEOMETRY FILE, LOAD LIBRARIES (HOMER,HLT,..)
- ODH_Init();
-
- // --- CONNECT TO TCP DUMP SUBSCRIBERS
- ODH_Connect("e300",42002,NULL,NULL,"e300",42001);
-
- // --- Next Event
- ODH_DisplayEvent();
-
- barCl = new TControlBar("vertical", "HLT DISPLAY - Cluster");
- barCl->AddButton("All Cluster",".p ODH_SetCluster(true,true)", "All Cluster");
- barCl->AddButton("Used Cluster",".p ODH_SetCluster(true,false)", "Used Cluster");
- barCl->AddButton("Unused Cluster",".p ODH_SetCluster(false,true)", "Unused Cluster");
- barCl->Show();
-
- bar = new TControlBar("vertical", "HLT DISPLAY");
- bar->AddButton("Next Event",".p ODH_DisplayEvent()", "Next Event");
- bar->AddSeparator();
- bar->AddButton("Show all slices",".p ODH_SetSliceRange()", "Show all slices");
- bar->AddSeparator();
- bar->AddButton("Keep 3D View",".p ODH_SetKeepView(true)", "Keep 3D View");
- bar->AddButton("!Keep 3D View",".p ODH_SetKeepView(false)", "Keep 3D View");
- bar->AddButton("Invert 3D View",".p ODH_SetInvert()","Invert 3D View");
- bar->AddSeparator();
- bar->AddButton("Show 3D Tracks",".p ODH_Set3DTracks(true)","Show 3D Tracks");
- bar->AddButton("!Show 3D Tracks",".p ODH_Set3DTracks()","!Show 3D Tracks");
- bar->AddButton("Show 3D Cluster",".p ODH_Set3DCluster(true)","Show 3D Cluster");
- bar->AddButton("!Show 3D Cluster",".p ODH_Set3DCluster()","!Show 3D Cluster");
- bar->AddButton("Show 3D PadRow",".p ODH_Set3DPadRow(true)","Show 3D PadRow");
- bar->AddButton("!Show 3D PadRow",".p ODH_Set3DPadRow()","!Show 3D PadRow");
- bar->AddButton("Show 3D Geometry",".p ODH_Set3DGeometry(true)","Show 3D Geometry");
- bar->AddButton("!Show 3D Geometry",".p ODH_Set3DGeometry()","!Show 3D Geometry");
- bar->AddSeparator();
- bar->AddButton("Show Sector 0",".p ODH_SetSliceRange(0)", "Show Next Event");
- bar->AddButton("Show Sector 9",".p ODH_SetSliceRange(9)", "Show Next Event");
- bar->AddButton("Show Sector 18",".p ODH_SetSliceRange(18)", "Show Next Event");
- bar->AddButton("Show Sector 27",".p ODH_SetSliceRange(27)", "Show Next Event");
- bar->AddButton("Show Sector 0 - 2",".p ODH_SetSliceRange(0,2)", "Show Next Event");
- bar->AddButton("Show Sector 0 - 9",".p ODH_SetSliceRange(0,9)", "Show Next Event");
- bar->AddButton("Show pair 0",".p ODH_SetSlicePair(0)", "Show Next Event");
- bar->AddButton("Show pair 0 - 2",".p ODH_SetSlicePair(0,2)", "Show Next Event");
-
- bar->AddSeparator();
-
-bar->AddButton("Close","gROOT.Reset(\"a\")", "Close");
-bar->Show();
-gROOT->SaveContext();
-}
-
-
+++ /dev/null
-{
-gROOT->GetInterpreter()->AddIncludePath( "$ALIHLT_TOPDIR/BASE" );
-gROOT->GetInterpreter()->AddIncludePath( "$ALIHLT_TOPDIR/TPCLib" );
-gROOT->GetInterpreter()->AddIncludePath( "$ALIHLT_TOPDIR/src" );
-
-gROOT->Macro("StartDisplayMacro.C");
-}
-
+++ /dev/null
-Package: ALICE HLT Online Monitoring GUI
-
-This package implements the ALICE High Level Trigger Online Monitoring GUI
-
-This packages is maintained by jochen.thaeder@kip.uni-heidelberg.de
-
-Authors:
-Jochen Thaeder
-
-autoconf setup by Matthias.Richter@ift.uib.no
-autoconf macros partially by Christian H. Christensen (ROOT) and taken from the
-Autoconf macro archive http://www.gnu.org/software/ac-archive/ (Qt)
+++ /dev/null
-2007-02-20 version 1.5.3
- - build system fixed for AliRoot v4-06-Release and higher
- - new library dependencies resolved
- - HOMER library migrated to AliRoot from v4-07-Release, check
- and switch added to choose between internal/external library
-2007-02-20 version 1.5.2
- - build system fix: add ROOT include directory to CPP flags
-
-2007-01-18 version 1.5.1
- - modification due to new hidden dependency in AliRoot libESD
- libXMLIO added to the additional ROOT libraries
-
-2007-01-18 version 1.5
- - version jump due to synchronization with Jochen's internal version
- define
- - the GUI version as of the end of the TPC commissioning Nov 2006
- - build system adapted in order to use qtdesigner directly
- - build system adapted to current AliRoot HEAD
- - default geometry file inbuilt in TPCLib. NOTE: You must update the
- AliRoot HLT module as well since the display code is part of that module
- The display now provides a default geometry file as fall back solution
- (ALIHLT_TOPDIR variable not longer reqired).
- - adapted to the new versions of the HLT online (PubSub) framework
-
-2006-10-05 version 0.2
- - handling of new include directory structure of the HOMER header files
- - added checking of AliHLTTPCDisplay library for HOMER support
-
-2006-09-20 version 0.1: The package has been converted to autoconf
-
+++ /dev/null
-# $Id$
-# Makefile template for the Alice HLT Alice HLT Online Monitoring GUI
-
-
-REAL_SRC = AliHLTGUI.cxx \
- AliHLTGUI.h \
- main.cxx \
- AliHLTGUIMainForm.ui \
- AliceLogo.gif \
- KIPLogo.gif
-
-REAL_SRC_DIR = $(top_srcdir)/src
-
-
-QT_BUILD_DIR = qtbuild
-BUILT_SOURCES = qtbuild/flags
-
-bin_SCRIPTS = src/startAliHLTGUI \
- qtbuild/AliHLTGUI
-
-SUBDIRS = . doc
-DIST_SUBDIRS = $(SUBDIRS)
-
-EXTRA_DIST = $(REAL_SRC:%=src/%) \
- src/AliHLTGUI.pro \
- src/flags.in \
- src/startAliHLTGUI.in
-
-CLEANFILES =
-
-LFLAGS = $(LDFLAGS)
-
-$(QT_BUILD_DIR):
- test -d $(QT_BUILD_DIR) || mkdir $(QT_BUILD_DIR)
-# $(foreach i, $(REAL_SRC:%=$(REAL_SRC_DIR)/%), (cd $(QT_BUILD_DIR) && ln -sf ../$i );)
-# ln -sf ../src/flags $(QT_BUILD_DIR)/flags
-# ln -sf ../src/AliHLTGUI.pro $(QT_BUILD_DIR)/AliHLTGUI.pro
-
-$(REAL_SRC:%=$(QT_BUILD_DIR)/%): $(REAL_SRC:%=$(REAL_SRC_DIR)/%)
- test -h $@ || ln -s $(patsubst $(QT_BUILD_DIR)/%, ../$(REAL_SRC_DIR)/%, $@) $@
-
-$(QT_BUILD_DIR)/flags: src/flags
- test -d $(QT_BUILD_DIR) || mkdir $(QT_BUILD_DIR)
- test -h $@ || ln -s ../$< $@
-
-$(QT_BUILD_DIR)/AliHLTGUI.pro: $(top_srcdir)/src/AliHLTGUI.pro
- test -d $(QT_BUILD_DIR) || mkdir $(QT_BUILD_DIR)
- test -h $@ || ln -s ../$< $@
-
-$(QT_BUILD_DIR)/Makefile: $(QT_BUILD_DIR)/AliHLTGUI.pro
- (cd $(QT_BUILD_DIR) \
- && export PATH=@QT_DIR@/bin:$(PATH) \
- && export QTDIR=@QT_DIR@ \
- && qmake AliHLTGUI.pro)
- cat $@ | sed -e 's|^LFLAGS\([ \t]*\)=|LFLAGS\1= $$(LDFLAGS)|' > $@.tmp \
- && mv $@.tmp $@
- cat $@ | sed -e 's|^CXXFLAGS\([ \t]*\)=|CXXFLAGS\1+=|' > $@.tmp \
- && mv $@.tmp $@
-# this is a fix for a bug in the ROOT Qt layer which causes TQtWidget.h included
-# twice, and one wrongly as tqtwidget.h. See README
- cat $@ | sed -e '/.ui\/AliHLTGUIMainForm.cpp:/,/(UIC)/d' > $@.tmp \
- && cat $@ | sed -e '/.ui\/AliHLTGUIMainForm.cpp:/,/(UIC)/!d' >> $@.tmp \
- && echo -e '\tcat $$@ | sed -e /tqtwidget.h/d > $$@.tmp && mv $$@.tmp $$@' >> $@.tmp \
- && mv $@.tmp $@
-
-$(QT_BUILD_DIR)/.ui/AliHLTGUIMainForm.h: $(QT_BUILD_DIR)/Makefile
-# cat $@ | sed -e '/tqwidget/d' > $@.tmp
-# mv $@.tmp $@
-
-$(QT_BUILD_DIR)/AliHLTGUI: $(QT_BUILD_DIR) $(REAL_SRC:%=$(QT_BUILD_DIR)/%) $(QT_BUILD_DIR)/Makefile $(QT_BUILD_DIR)/.ui/AliHLTGUIMainForm.h
- (cd $(QT_BUILD_DIR) \
- && export PATH=@QT_DIR@/bin:$(PATH) \
- && export QTDIR=@QT_DIR@ \
- && $(MAKE) CXXFLAGS="$(CXXFLAGS) -DALIHLTTPCDISPLAY_VERSION=@ALIHLTTPCDISPLAY_VERSION@ -DPACKAGE_VERSION=\"@PACKAGE_VERSION@\"")
-
-clean-local:
- rm -rf $(QT_BUILD_DIR)
-
-#
-# EOF
-#
+++ /dev/null
-Package: ALICE HLT Online Monitoring GUI
-
-This package implements the ALICE High Level Trigger Online Monitoring GUI.
-
-All contributions are under the terms of the
-GNU General Public License as published by the Free Software
-Foundation. Also see files AUTHORS and THANKS.
-
-This packages is maintained by jochen.thaeder@kip.uni-heidelberg.de
-Comments, bug reports, suggestions welcome!
-
-0.TOC
-=====
-1.Overview
-2.Requirements
-4.Setting up a version retrieved from CVS
-5.Modifying a distributed package
-6.Installation
-7.Troubleshooting
-8.Documentation
-9.Further information
-10.Reporting bugs/Asking for support
-11.Further internal information
-
-1.Overview
-==========
-The Online Monitoring GUI is a Front-end for the AliHLTTPCDisplay library.
-
-2.Requirements
-==============
-- Trolltechs Qt system version 3.3. or higher
-- HLT Publisher Subscriber Framework
-- The package needs both ROOT and AliRoot. Both must be set up in the
- usual way (ROOTSYS, ALICE_ROOT, library locations evtl. specified in
- LD_LIBRARY_PATH, ...).
-- ROOT compiled with Qt support (--enable-qt, --with-qt-...)
-- HLT analysis components which are part of AliRoot, but might have to be
- built 'manually'. Check $ALICE_ROOT/HLT/README for installation instructions.
-
-To set up a version retrieved from CVS, autoconf 2.57, automake 1.6
-,and libtool 1.4 or higher versions are required. Thats the versions
-which come with the Scientific Linux CERN 3. The same applies if
-you want to change the Makefiles.
-
-If your GNU build tools are too old, ask the maintainers for a distributed
-package.
-
-4.Setting up a version retrieved from CVS
-=========================================
-Skip this section if you have started from the tar ball.
-
-A version checked out from CVS requires a few steps to set up the Makefiles.
-Go to the directory and run
-autoreconf -i -f
-
-Then continue with the package configuration described in the 'Installation'
-section.
-
-5.Modifying a distributed package
-=================================
-If you are going the modify a distributed package you might need to re-make
-the GNU build system by running
- autoreconf -f -i
-
-Please notify the authors about bug fixes/corrections/extensions you made if
-you consider them worth to be merged into the project.
-
-Then continue with the package configuration described in the 'Installation'
-section.
-
-6.Installation
-==============
-Package build relies on the GNU triplet configure, make and make install.
-In order to keep the development directory clean, it is recommended to
-use a separate build directory.
-
-e.g. from the top directory do
-
- mkdir build
- cd build
- ../configure
- make
- make install
-
-You should redirect the output of the make into a file.
-The default install directories are set to the current directory ($PWD).
-
-To override the default prefix use
---prefix=<dir>
-
-Some important options:
---with-pubsub # The top dir of the PubSub framework installation
---with-alihlt # The top dir of the HLT analysis components
-
-Note: You can have several build directories with different configure options,
-but using the same source code.
-
-If you need further information on the GNU build system, execute from the
-top directory:
-./configure --help | less
-
-
-7.Troubleshooting
-=================
-7.1
-configure: error: Stop! The package needs the AliHLTTPCDisplay library.
- Use --with-alihlt option to point to the AliRoot HLT module installation
-If you are sure that you specified the correct path with the option
---with-alihlt and that this folder contains the ALICE HLT component framework
-installation (remember eventually 'make install'), you can try the option
---disable-strict in order to deactivate the strict checking. Anyhow, send the
-config.log together with a command history to the developers (see 10.Reporting
-bugs/Asking for support). The same applies if configure complains about HOMER.
-
-7.2
-configure: error: Stop! The AliHLTTPCDisplay library must be compiled with HOMER
- support
-Check your configure option of the HLT component framework package. Did you
-configure with the HLT PubSub framework? If you just compiled everthing in
-AliRoot, you might need a re-compilation since we need external packages. Go to
-${ALICE_ROOT}/HLT and follow the instructions of the README. Specify $ALICE_ROOT
-as installation prefix and the path to the PubSub installation, e.g.
-../configure --prefix=$ALICE_ROOT --with-pubsub=<my pubsub installation>
-
-Note: you must change <my pubsub installation>.
-
-7.2
-.ui/AliHLTGUIMainForm.cpp:38:23: tqtwidget.h: No such file or directory
-This is a bug in the ROOT qt interface, which causes qt uic to include both
-TQtWidget.h and tqtwidget.h. But only TQtWidget.h existst. Open the file
-qtbuild/.ui/AliHLTGUIMainForm.cpp in your build directory and delete the line
-#include "tqtwidget.h". Unfortunately we can not do more.
-
-7.3
-/usr/bin/ld: cannot find -lQtGui
-Most likeliy caused by another bug in the root qt interface. Fixed in ROOT
-version v5-11-04. To manually fix the problem, set the QTROOTSYSDIR variable
-to a directory which DOES NOT exist, e.g.
-setenv QTROOTSYSDIR /this-doesnt-exist #(csh)
-export QTROOTSYSDIR=/this-doesnt-exist #(bash)
-
-Note: csh and bash just mark the lines for the two different types of shells,
-skip all beginning with the '#'.
-
-8.Documentation
-===============
-Documentation is generated from the source code at compile time if
-doxygen is installed on the machine. From the build directory, open
-doc/html/index.html with a web browser.
-
-9.Further information
-=====================
-A wiki with detailed information is set up at
-http://www.kip.uni-heidelberg.de/wiki/HLT
-
-10.Reporting bugs/Asking for support
-===================================
-Please include the following information into your request:
-- config.log from your build directory
-- output of the make process. Note: Redirect BOTH the stdout and stderr
- channel to a log file. Redirection depends on the shell you are using:
- bash: make 2>&1 | tee make.log
- csh: make |& tee make.log
- The 'tee' command just duplicates the output.
-
-Send the request to
- jochen.thaeder@kip.uni-heidelberg.de
- matthias.richter@ift.uib.no
-
-11.Further internal information
-============================
-To make the 'distcheck' target set the ALIHLT_DC_DIR variable to the HLT PubSub
-Framework and the ALIHLT_PREFIX variable to the installation path of the HLT
-component framework.
-Alternatively on can set the include and libdir for bothe the HLT PubSub and the
-HLT component framework in CXXFLAGS and LDFLAGS respectively. Since configure
-does also runtime tests, the library paths for both PubSub and analysis components
- must be added to LD_LIBRARY_PATH.
+++ /dev/null
-dnl
-dnl $Id$
-dnl
-dnl This files contains a couple of autoconf macros, see macro
-dnl description for copyright notice.
-dnl
-dnl
-dnl ------------------------------------------------------------------
-dnl
-dnl AC_DEBUG and AC_OPTIMIZATION
-dnl
-dnl Copyright (C) 2002 Christian Holm Christensen <cholm@nbi.dk>
-dnl
-dnl This library is free software; you can redistribute it and/or
-dnl modify it under the terms of the GNU Lesser General Public License
-dnl as published by the Free Software Foundation; either version 2.1
-dnl of the License, or (at your option) any later version.
-dnl
-dnl This library is distributed in the hope that it will be useful,
-dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
-dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-dnl Lesser General Public License for more details.
-dnl
-dnl You should have received a copy of the GNU Lesser General Public
-dnl License along with this library; if not, write to the Free
-dnl Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-dnl 02111-1307 USA
-dnl
-dnl ------------------------------------------------------------------
-AC_DEFUN([AC_DEBUG],
-[
- AC_REQUIRE([AC_PROG_CC])
- AC_REQUIRE([AC_PROG_CXX])
- AC_MSG_CHECKING(whether to make debug objects)
- AC_ARG_ENABLE(debug,
- [AC_HELP_STRING([--enable-debug],[Enable debugging symbols in objects])],
- [],[enable_debug=yes])
- if test "x$enable_debug" = "xno" ; then
- CFLAGS=`echo $CFLAGS | sed 's,-g,,'`
- CXXFLAGS=`echo $CXXFLAGS | sed 's,-g,,'`
- else
- AC_DEFINE(__DEBUG)
- case $CXXFLAGS in
- *-g*) ;;
- *) CXXFLAGS="$CXXFLAGS -g" ;;
- esac
- case $CFLAGS in
- *-g*) ;;
- *) CFLAGS="$CFLAGS -g" ;;
- esac
- fi
- AC_MSG_RESULT($enable_debug 'CFLAGS=$CFLAGS')
-])
-
-dnl ------------------------------------------------------------------
-AC_DEFUN([AC_OPTIMIZATION],
-[
- AC_REQUIRE([AC_PROG_CC])
- AC_REQUIRE([AC_PROG_CXX])
-
- AC_ARG_ENABLE(optimization,
- [AC_HELP_STRING([--enable-optimization],[Enable optimization of objects])],
- [],[enable_optimization=yes])
-
- AC_MSG_CHECKING(for optimiztion level)
-
- changequote(<<, >>)dnl
- if test "x$enable_optimization" = "xno" ; then
- CFLAGS=`echo $CFLAGS | sed 's,-O\([0-9][0-9]*\|\),,'`
- CXXFLAGS=`echo $CXXFLAGS | sed 's,-O\([0-9][0-9]*\|\),,'`
- elif test "x$enable_optimization" = "xyes" ; then
- case $CXXFLAGS in
- *-O*) ;;
- *) CXXFLAGS="$CXXFLAGS -O2" ;;
- esac
- case $CFLAGS in
- *-O*) ;;
- *) CFLAGS="$CXXFLAGS -O2" ;;
- esac
- else
- CFLAGS=`echo $CFLAGS | sed "s,-O\([0-9][0-9]*\|\),-O$enable_optimization,"`
- CXXFLAGS=`echo $CXXFLAGS | sed "s,-O\([0-9][0-9]*\|\),-O$enable_optimization,"`
- fi
- changequote([, ])dnl
- AC_MSG_RESULT($enable_optimization 'CFLAGS=$CFLAGS')
-])
-
-dnl ------------------------------------------------------------------
-dnl
-dnl ROOT_PATH
-dnl
-dnl Autoconf macro to check for existence or ROOT on the system
-dnl Synopsis:
-dnl
-dnl ROOT_PATH([MINIMUM-VERSION, [ACTION-IF-FOUND, [ACTION-IF-NOT-FOUND]]])
-dnl
-dnl Some examples:
-dnl
-dnl ROOT_PATH(3.03/05, , AC_MSG_ERROR(Your ROOT version is too old))
-dnl ROOT_PATH(, AC_DEFINE([HAVE_ROOT]))
-dnl
-dnl The macro defines the following substitution variables
-dnl
-dnl ROOTCONF full path to root-config
-dnl ROOTEXEC full path to root
-dnl ROOTCINT full path to rootcint
-dnl ROOTLIBDIR Where the ROOT libraries are
-dnl ROOTINCDIR Where the ROOT headers are
-dnl ROOTCFLAGS Extra compiler flags
-dnl ROOTLIBS ROOT basic libraries
-dnl ROOTGLIBS ROOT basic + GUI libraries
-dnl ROOTAUXLIBS Auxilary libraries and linker flags for ROOT
-dnl ROOTAUXCFLAGS Auxilary compiler flags
-dnl ROOTRPATH Same as ROOTLIBDIR
-dnl
-dnl The macro will fail if root-config and rootcint isn't found.
-dnl
-dnl Christian Holm Christensen <cholm@nbi.dk>
-dnl
-AC_DEFUN([ROOT_PATH],
-[
- AC_ARG_WITH(rootsys,
- [ --with-rootsys top of the ROOT installation directory],
- user_rootsys=$withval,
- user_rootsys="none")
- if test ! x"$user_rootsys" = xnone; then
- rootbin="$user_rootsys/bin"
- elif test ! x"$ROOTSYS" = x ; then
- rootbin="$ROOTSYS/bin"
- else
- rootbin=$PATH
- fi
- AC_PATH_PROG(ROOTCONF, root-config , no, $rootbin)
- AC_PATH_PROG(ROOTEXEC, root , no, $rootbin)
- AC_PATH_PROG(ROOTCINT, rootcint , no, $rootbin)
-
- if test ! x"$ROOTCONF" = "xno" && \
- test ! x"$ROOTCINT" = "xno" ; then
-
- # define some variables
- ROOTLIBDIR=`$ROOTCONF --libdir`
- ROOTINCDIR=`$ROOTCONF --incdir`
- ROOTCFLAGS=`$ROOTCONF --noauxcflags --cflags`
- ROOTLIBS=`$ROOTCONF --noauxlibs --noldflags --libs`
- ROOTGLIBS=`$ROOTCONF --noauxlibs --noldflags --glibs`
- ROOTAUXCFLAGS=`$ROOTCONF --auxcflags`
- ROOTAUXLIBS=`$ROOTCONF --auxlibs`
- ROOTRPATH=$ROOTLIBDIR
-
- if test $1 ; then
- AC_MSG_CHECKING(wether ROOT version >= [$1])
- vers=`$ROOTCONF --version | tr './' ' ' | awk 'BEGIN { FS = " "; } { printf "%d", ($''1 * 1000 + $''2) * 1000 + $''3;}'`
- requ=`echo $1 | tr './' ' ' | awk 'BEGIN { FS = " "; } { printf "%d", ($''1 * 1000 + $''2) * 1000 + $''3;}'`
- if test $vers -lt $requ ; then
- AC_MSG_RESULT(no)
- no_root="yes"
- else
- AC_MSG_RESULT(yes)
- fi
- fi
- else
- # otherwise, we say no_root
- no_root="yes"
- fi
-
- AC_SUBST(ROOTLIBDIR)
- AC_SUBST(ROOTINCDIR)
- AC_SUBST(ROOTCFLAGS)
- AC_SUBST(ROOTLIBS)
- AC_SUBST(ROOTGLIBS)
- AC_SUBST(ROOTAUXLIBS)
- AC_SUBST(ROOTAUXCFLAGS)
- AC_SUBST(ROOTRPATH)
-
- if test "x$no_root" = "x" ; then
- ifelse([$2], , :, [$2])
- else
- ifelse([$3], , :, [$3])
- fi
-])
-
-dnl ------------------------------------------------------------------
-dnl
-dnl BNV_HAVE_QT taken from the autoconf macro archive
-dnl http://www.gnu.org/software/ac-archive/
-dnl
-dnl @synopsis BNV_HAVE_QT [--with-Qt-dir=DIR] [--with-Qt-lib-dir=DIR] [--with-Qt-lib=LIB]
-dnl @synopsis BNV_HAVE_QT [--with-Qt-include-dir=DIR] [--with-Qt-bin-dir=DIR] [--with-Qt-lib-dir=DIR] [--with-Qt-lib=LIB]
-dnl
-dnl @summary Search for Trolltech's Qt GUI framework.
-dnl
-dnl Searches common directories for Qt include files, libraries and Qt
-dnl binary utilities. The macro supports several different versions of
-dnl the Qt framework being installed on the same machine. Without
-dnl options, the macro is designed to look for the latest library,
-dnl i.e., the highest definition of QT_VERSION in qglobal.h. By use of
-dnl one or more options a different library may be selected. There are
-dnl two different sets of options. Both sets contain the option
-dnl --with-Qt-lib=LIB which can be used to force the use of a
-dnl particular version of the library file when more than one are
-dnl available. LIB must be in the form as it would appear behind the
-dnl "-l" option to the compiler. Examples for LIB would be "qt-mt" for
-dnl the multi-threaded version and "qt" for the regular version. In
-dnl addition to this, the first set consists of an option
-dnl --with-Qt-dir=DIR which can be used when the installation conforms
-dnl to Trolltech's standard installation, which means that header files
-dnl are in DIR/include, binary utilities are in DIR/bin and the library
-dnl is in DIR/lib. The second set of options can be used to indicate
-dnl individual locations for the header files, the binary utilities and
-dnl the library file, in addition to the specific version of the
-dnl library file.
-dnl
-dnl The following shell variable is set to either "yes" or "no":
-dnl
-dnl have_qt
-dnl
-dnl Additionally, the following variables are exported:
-dnl
-dnl QT_CXXFLAGS
-dnl QT_LIBS
-dnl QT_MOC
-dnl QT_UIC
-dnl QT_DIR
-dnl
-dnl which respectively contain an "-I" flag pointing to the Qt include
-dnl directory (and "-DQT_THREAD_SUPPORT" when LIB is "qt-mt"), link
-dnl flags necessary to link with Qt and X, the name of the meta object
-dnl compiler and the user interface compiler both with full path, and
-dnl finaly the variable QTDIR as Trolltech likes to see it defined (if
-dnl possible).
-dnl
-dnl Example lines for Makefile.in:
-dnl
-dnl CXXFLAGS = @QT_CXXFLAGS@
-dnl MOC = @QT_MOC@
-dnl
-dnl After the variables have been set, a trial compile and link is
-dnl performed to check the correct functioning of the meta object
-dnl compiler. This test may fail when the different detected elements
-dnl stem from different releases of the Qt framework. In that case, an
-dnl error message is emitted and configure stops.
-dnl
-dnl No common variables such as $LIBS or $CFLAGS are polluted.
-dnl
-dnl Options:
-dnl
-dnl --with-Qt-dir=DIR: DIR is equal to $QTDIR if you have followed the
-dnl installation instructions of Trolltech. Header files are in
-dnl DIR/include, binary utilities are in DIR/bin and the library is in
-dnl DIR/lib.
-dnl
-dnl --with-Qt-include-dir=DIR: Qt header files are in DIR.
-dnl
-dnl --with-Qt-bin-dir=DIR: Qt utilities such as moc and uic are in DIR.
-dnl
-dnl --with-Qt-lib-dir=DIR: The Qt library is in DIR.
-dnl
-dnl --with-Qt-lib=LIB: Use -lLIB to link with the Qt library.
-dnl
-dnl If some option "=no" or, equivalently, a --without-Qt-* version is
-dnl given in stead of a --with-Qt-*, "have_qt" is set to "no" and the
-dnl other variables are set to the empty string.
-dnl
-dnl @category InstalledPackages
-dnl @author Bastiaan Veelo <Bastiaan@Veelo.net>
-dnl @version 2006-03-12
-dnl @license AllPermissive
-
-dnl Copyright (C) 2001, 2002, 2003, 2005, 2006 Bastiaan Veelo
-
-dnl THANKS! This code includes bug fixes and contributions made by:
-dnl Tim McClarren,
-dnl Dennis R. Weilert,
-dnl Qingning Huo,
-dnl Brian Mingus,
-dnl Jens Hannemann,
-dnl Pavel Roskin,
-dnl Scott J. Bertin.
-
-dnl ChangeLog
-dnl 2006-03-12 * Hide output of ls and fix an m4 quoting problem (due to Scott J. Bertin).
-dnl 2006-02-13 * Check compiler return value instead of parsing the error stream,
-dnl which detected warnings as false negatives (due to Jens Hannemann).
-dnl 2006-02-02 * Spelling of "Success".
-dnl * Fixed unsave test for $bnv_qt_lib without quotes.
-dnl * Put dnl in front of all comments.
-dnl * Changed -l$bnv_qt_lib_dir into -L$bnv_qt_lib_dir (all due to Pavel Roskin).
-dnl 2006-01-19 * Support for 64bit architectures.
-dnl * Updated documentation.
-dnl 2006-01-18: * Fix "cat: bnv_qt_test.c: No such file or directory" (due to Jens Hannemann).
-dnl * Hide output of failing ls.
-dnl 2006-01-11: * Check in /Developer on Mac OS X; Check in $QTDIR (due to Brian Mingus).
-
-dnl Calls BNV_PATH_QT_DIRECT (contained in this file) as a subroutine.
-AC_DEFUN([BNV_HAVE_QT],
-[
- AC_REQUIRE([AC_PROG_CXX])
- AC_REQUIRE([AC_PATH_X])
- AC_REQUIRE([AC_PATH_XTRA])
-
- AC_MSG_CHECKING(for Qt)
-
- AC_ARG_WITH([Qt-dir],
- [ --with-Qt-dir=DIR DIR is equal to $QTDIR if you have followed the
- installation instructions of Trolltech. Header
- files are in DIR/include, binary utilities are
- in DIR/bin. The library is in DIR/lib, unless
- --with-Qt-lib-dir is also set.])
- AC_ARG_WITH([Qt-include-dir],
- [ --with-Qt-include-dir=DIR
- Qt header files are in DIR])
- AC_ARG_WITH([Qt-bin-dir],
- [ --with-Qt-bin-dir=DIR Qt utilities such as moc and uic are in DIR])
- AC_ARG_WITH([Qt-lib-dir],
- [ --with-Qt-lib-dir=DIR The Qt library is in DIR])
- AC_ARG_WITH([Qt-lib],
- [ --with-Qt-lib=LIB Use -lLIB to link with the Qt library])
- if test x"$with_Qt_dir" = x"no" ||
- test x"$with_Qt_include-dir" = x"no" ||
- test x"$with_Qt_bin_dir" = x"no" ||
- test x"$with_Qt_lib_dir" = x"no" ||
- test x"$with_Qt_lib" = x"no"; then
- # user disabled Qt. Leave cache alone.
- have_qt="User disabled Qt."
- else
- # "yes" is a bogus option
- if test x"$with_Qt_dir" = xyes; then
- with_Qt_dir=
- fi
- if test x"$with_Qt_include_dir" = xyes; then
- with_Qt_include_dir=
- fi
- if test x"$with_Qt_bin_dir" = xyes; then
- with_Qt_bin_dir=
- fi
- if test x"$with_Qt_lib_dir" = xyes; then
- with_Qt_lib_dir=
- fi
- if test x"$with_Qt_lib" = xyes; then
- with_Qt_lib=
- fi
- # No Qt unless we discover otherwise
- have_qt=no
- # Check whether we are requested to link with a specific version
- if test x"$with_Qt_lib" != x; then
- bnv_qt_lib="$with_Qt_lib"
- fi
- # Check whether we were supplied with an answer already
- if test x"$with_Qt_dir" != x; then
- have_qt=yes
- bnv_qt_dir="$with_Qt_dir"
- bnv_qt_include_dir="$with_Qt_dir/include"
- bnv_qt_bin_dir="$with_Qt_dir/bin"
- bnv_qt_lib_dir="$with_Qt_dir/lib"
- # Only search for the lib if the user did not define one already
- if test x"$bnv_qt_lib" = x; then
- bnv_qt_lib="`ls $bnv_qt_lib_dir/libqt* | sed -n 1p |
- sed s@$bnv_qt_lib_dir/lib@@ | [sed s@[.].*@@]`"
- fi
- bnv_qt_LIBS="-L$bnv_qt_lib_dir -l$bnv_qt_lib $X_PRE_LIBS $X_LIBS -lX11 -lXext -lXmu -lXt -lXi $X_EXTRA_LIBS"
- else
- # Use cached value or do search, starting with suggestions from
- # the command line
- AC_CACHE_VAL(bnv_cv_have_qt,
- [
- # We are not given a solution and there is no cached value.
- bnv_qt_dir=NO
- bnv_qt_include_dir=NO
- bnv_qt_lib_dir=NO
- if test x"$bnv_qt_lib" = x; then
- bnv_qt_lib=NO
- fi
- BNV_PATH_QT_DIRECT
- if test "$bnv_qt_dir" = NO ||
- test "$bnv_qt_include_dir" = NO ||
- test "$bnv_qt_lib_dir" = NO ||
- test "$bnv_qt_lib" = NO; then
- # Problem with finding complete Qt. Cache the known absence of Qt.
- bnv_cv_have_qt="have_qt=no"
- else
- # Record where we found Qt for the cache.
- bnv_cv_have_qt="have_qt=yes \
- bnv_qt_dir=$bnv_qt_dir \
- bnv_qt_include_dir=$bnv_qt_include_dir \
- bnv_qt_bin_dir=$bnv_qt_bin_dir \
- bnv_qt_LIBS=\"$bnv_qt_LIBS\""
- fi
- ])dnl
- eval "$bnv_cv_have_qt"
- fi # all $bnv_qt_* are set
- fi # $have_qt reflects the system status
- if test x"$have_qt" = xyes; then
- QT_CXXFLAGS="-I$bnv_qt_include_dir"
- if test x"$bnv_qt_lib" = xqt-mt; then
- QT_CXXFLAGS="$QT_CXXFLAGS -DQT_THREAD_SUPPORT"
- fi
- QT_DIR="$bnv_qt_dir"
- QT_LIBS="$bnv_qt_LIBS"
- # If bnv_qt_dir is defined, utilities are expected to be in the
- # bin subdirectory
- if test x"$bnv_qt_dir" != x; then
- if test -x "$bnv_qt_dir/bin/uic"; then
- QT_UIC="$bnv_qt_dir/bin/uic"
- else
- # Old versions of Qt don't have uic
- QT_UIC=
- fi
- QT_MOC="$bnv_qt_dir/bin/moc"
- else
- # Or maybe we are told where to look for the utilities
- if test x"$bnv_qt_bin_dir" != x; then
- if test -x "$bnv_qt_bin_dir/uic"; then
- QT_UIC="$bnv_qt_bin_dir/uic"
- else
- # Old versions of Qt don't have uic
- QT_UIC=
- fi
- QT_MOC="$bnv_qt_bin_dir/moc"
- else
- # Last possibility is that they are in $PATH
- QT_UIC="`which uic`"
- QT_MOC="`which moc`"
- fi
- fi
- # All variables are defined, report the result
- AC_MSG_RESULT([$have_qt:
- QT_CXXFLAGS=$QT_CXXFLAGS
- QT_DIR=$QT_DIR
- QT_LIBS=$QT_LIBS
- QT_UIC=$QT_UIC
- QT_MOC=$QT_MOC])
- else
- # Qt was not found
- QT_CXXFLAGS=
- QT_DIR=
- QT_LIBS=
- QT_UIC=
- QT_MOC=
- AC_MSG_RESULT($have_qt)
- fi
- AC_SUBST(QT_CXXFLAGS)
- AC_SUBST(QT_DIR)
- AC_SUBST(QT_LIBS)
- AC_SUBST(QT_UIC)
- AC_SUBST(QT_MOC)
-
- #### Being paranoid:
- if test x"$have_qt" = xyes; then
- AC_MSG_CHECKING(correct functioning of Qt installation)
- AC_CACHE_VAL(bnv_cv_qt_test_result,
- [
- cat > bnv_qt_test.h << EOF
-#include <qobject.h>
-class Test : public QObject
-{
-Q_OBJECT
-public:
- Test() {}
- ~Test() {}
-public slots:
- void receive() {}
-signals:
- void send();
-};
-EOF
-
- cat > bnv_qt_main.$ac_ext << EOF
-#include "bnv_qt_test.h"
-#include <qapplication.h>
-int main( int argc, char **argv )
-{
- QApplication app( argc, argv );
- Test t;
- QObject::connect( &t, SIGNAL(send()), &t, SLOT(receive()) );
-}
-EOF
-
- bnv_cv_qt_test_result="failure"
- bnv_try_1="$QT_MOC bnv_qt_test.h -o moc_bnv_qt_test.$ac_ext >/dev/null 2>/dev/null"
- AC_TRY_EVAL(bnv_try_1)
- if test x"$ac_status" != x0; then
- echo "$bnv_err_1" >&AC_FD_CC
- echo "configure: could not run $QT_MOC on:" >&AC_FD_CC
- cat bnv_qt_test.h >&AC_FD_CC
- else
- bnv_try_2="$CXX $QT_CXXFLAGS -c $CXXFLAGS -o moc_bnv_qt_test.o moc_bnv_qt_test.$ac_ext >/dev/null 2>/dev/null"
- AC_TRY_EVAL(bnv_try_2)
- if test x"$ac_status" != x0; then
- echo "$bnv_err_2" >&AC_FD_CC
- echo "configure: could not compile:" >&AC_FD_CC
- cat moc_bnv_qt_test.$ac_ext >&AC_FD_CC
- else
- bnv_try_3="$CXX $QT_CXXFLAGS -c $CXXFLAGS -o bnv_qt_main.o bnv_qt_main.$ac_ext >/dev/null 2>/dev/null"
- AC_TRY_EVAL(bnv_try_3)
- if test x"$ac_status" != x0; then
- echo "$bnv_err_3" >&AC_FD_CC
- echo "configure: could not compile:" >&AC_FD_CC
- cat bnv_qt_main.$ac_ext >&AC_FD_CC
- else
- bnv_try_4="$CXX $QT_LIBS $LIBS -o bnv_qt_main bnv_qt_main.o moc_bnv_qt_test.o >/dev/null 2>/dev/null"
- AC_TRY_EVAL(bnv_try_4)
- if test x"$ac_status" != x0; then
- echo "$bnv_err_4" >&AC_FD_CC
- else
- bnv_cv_qt_test_result="success"
- fi
- fi
- fi
- fi
- ])dnl AC_CACHE_VAL bnv_cv_qt_test_result
- AC_MSG_RESULT([$bnv_cv_qt_test_result]);
- if test x"$bnv_cv_qt_test_result" = "xfailure"; then
- AC_MSG_ERROR([Failed to find matching components of a complete
- Qt installation. Try using more options,
- see ./configure --help.])
- fi
-
- rm -f bnv_qt_test.h moc_bnv_qt_test.$ac_ext moc_bnv_qt_test.o \
- bnv_qt_main.$ac_ext bnv_qt_main.o bnv_qt_main
- fi
-])
-
-dnl Internal subroutine of BNV_HAVE_QT
-dnl Set bnv_qt_dir bnv_qt_include_dir bnv_qt_bin_dir bnv_qt_lib_dir bnv_qt_lib
-AC_DEFUN([BNV_PATH_QT_DIRECT],
-[
- ## Binary utilities ##
- if test x"$with_Qt_bin_dir" != x; then
- bnv_qt_bin_dir=$with_Qt_bin_dir
- fi
- ## Look for header files ##
- if test x"$with_Qt_include_dir" != x; then
- bnv_qt_include_dir="$with_Qt_include_dir"
- else
- # The following header file is expected to define QT_VERSION.
- qt_direct_test_header=qglobal.h
- # Look for the header file in a standard set of common directories.
- bnv_include_path_list="
- /usr/include
- `ls -dr ${QTDIR}/include 2>/dev/null`
- `ls -dr /usr/include/qt* 2>/dev/null`
- `ls -dr /usr/lib/qt*/include 2>/dev/null`
- `ls -dr /usr/local/qt*/include 2>/dev/null`
- `ls -dr /opt/qt*/include 2>/dev/null`
- `ls -dr /Developer/qt*/include 2>/dev/null`
- "
- for bnv_dir in $bnv_include_path_list; do
- if test -r "$bnv_dir/$qt_direct_test_header"; then
- bnv_dirs="$bnv_dirs $bnv_dir"
- fi
- done
- # Now look for the newest in this list
- bnv_prev_ver=0
- for bnv_dir in $bnv_dirs; do
- bnv_this_ver=`egrep -w '#define QT_VERSION' $bnv_dir/$qt_direct_test_header | sed s/'#define QT_VERSION'//`
- if expr $bnv_this_ver '>' $bnv_prev_ver > /dev/null; then
- bnv_qt_include_dir=$bnv_dir
- bnv_prev_ver=$bnv_this_ver
- fi
- done
- fi dnl Found header files.
-
- # Are these headers located in a traditional Trolltech installation?
- # That would be $bnv_qt_include_dir stripped from its last element:
- bnv_possible_qt_dir=`dirname $bnv_qt_include_dir`
- if (test -x $bnv_possible_qt_dir/bin/moc) &&
- ((ls $bnv_possible_qt_dir/lib/libqt* > /dev/null 2>/dev/null) ||
- (ls $bnv_possible_qt_dir/lib64/libqt* > /dev/null 2>/dev/null)); then
- # Then the rest is a piece of cake
- bnv_qt_dir=$bnv_possible_qt_dir
- bnv_qt_bin_dir="$bnv_qt_dir/bin"
- if test x"$with_Qt_lib_dir" != x; then
- bnv_qt_lib_dir="$with_Qt_lib_dir"
- else
- if (test -d $bnv_qt_dir/lib64); then
- bnv_qt_lib_dir="$bnv_qt_dir/lib64"
- else
- bnv_qt_lib_dir="$bnv_qt_dir/lib"
- fi
- fi
- # Only look for lib if the user did not supply it already
- if test x"$bnv_qt_lib" = xNO; then
- bnv_qt_lib="`ls $bnv_qt_lib_dir/libqt* | sed -n 1p |
- sed s@$bnv_qt_lib_dir/lib@@ | [sed s@[.].*@@]`"
- fi
- bnv_qt_LIBS="-L$bnv_qt_lib_dir -l$bnv_qt_lib $X_PRE_LIBS $X_LIBS -lX11 -lXext -lXmu -lXt -lXi $X_EXTRA_LIBS"
- else
- # There is no valid definition for $QTDIR as Trolltech likes to see it
- bnv_qt_dir=
- ## Look for Qt library ##
- if test x"$with_Qt_lib_dir" != x; then
- bnv_qt_lib_dir="$with_Qt_lib_dir"
- # Only look for lib if the user did not supply it already
- if test x"$bnv_qt_lib" = xNO; then
- bnv_qt_lib="`ls $bnv_qt_lib_dir/libqt* | sed -n 1p |
- sed s@$bnv_qt_lib_dir/lib@@ | [sed s@[.].*@@]`"
- fi
- bnv_qt_LIBS="-L$bnv_qt_lib_dir -l$bnv_qt_lib $X_PRE_LIBS $X_LIBS -lX11 -lXext -lXmu -lXt -lXi $X_EXTRA_LIBS"
- else
- # Normally, when there is no traditional Trolltech installation,
- # the library is installed in a place where the linker finds it
- # automatically.
- # If the user did not define the library name, try with qt
- if test x"$bnv_qt_lib" = xNO; then
- bnv_qt_lib=qt
- fi
- qt_direct_test_header=qapplication.h
- qt_direct_test_main="
- int argc;
- char ** argv;
- QApplication app(argc,argv);
- "
- # See if we find the library without any special options.
- # Don't add top $LIBS permanently yet
- bnv_save_LIBS="$LIBS"
- LIBS="-l$bnv_qt_lib $X_PRE_LIBS $X_LIBS -lX11 -lXext -lXmu -lXt -lXi $X_EXTRA_LIBS"
- bnv_qt_LIBS="$LIBS"
- bnv_save_CXXFLAGS="$CXXFLAGS"
- CXXFLAGS="-I$bnv_qt_include_dir"
- AC_TRY_LINK([#include <$qt_direct_test_header>],
- $qt_direct_test_main,
- [
- # Success.
- # We can link with no special library directory.
- bnv_qt_lib_dir=
- ], [
- # That did not work. Try the multi-threaded version
- echo "Non-critical error, please neglect the above." >&AC_FD_CC
- bnv_qt_lib=qt-mt
- LIBS="-l$bnv_qt_lib $X_PRE_LIBS $X_LIBS -lX11 -lXext -lXmu -lXt -lXi $X_EXTRA_LIBS"
- AC_TRY_LINK([#include <$qt_direct_test_header>],
- $qt_direct_test_main,
- [
- # Success.
- # We can link with no special library directory.
- bnv_qt_lib_dir=
- ], [
- # That did not work. Try the OpenGL version
- echo "Non-critical error, please neglect the above." >&AC_FD_CC
- bnv_qt_lib=qt-gl
- LIBS="-l$bnv_qt_lib $X_PRE_LIBS $X_LIBS -lX11 -lXext -lXmu -lXt -lXi $X_EXTRA_LIBS"
- AC_TRY_LINK([#include <$qt_direct_test_header>],
- $qt_direct_test_main,
- [
- # Success.
- # We can link with no special library directory.
- bnv_qt_lib_dir=
- ], [
- # That did not work. Maybe a library version I don't know about?
- echo "Non-critical error, please neglect the above." >&AC_FD_CC
- # Look for some Qt lib in a standard set of common directories.
- bnv_dir_list="
- `echo $bnv_qt_includes | sed ss/includess`
- /lib
- /usr/lib64
- /usr/lib
- /usr/local/lib64
- /usr/local/lib
- /opt/lib64
- /opt/lib
- `ls -dr /usr/lib64/qt* 2>/dev/null`
- `ls -dr /usr/lib64/qt*/lib64 2>/dev/null`
- `ls -dr /usr/lib/qt* 2>/dev/null`
- `ls -dr /usr/local/qt* 2>/dev/null`
- `ls -dr /opt/qt* 2>/dev/null`
- "
- for bnv_dir in $bnv_dir_list; do
- if ls $bnv_dir/libqt* >/dev/null 2>/dev/null; then
- # Gamble that it's the first one...
- bnv_qt_lib="`ls $bnv_dir/libqt* | sed -n 1p |
- sed s@$bnv_dir/lib@@ | sed s/[[.]].*//`"
- bnv_qt_lib_dir="$bnv_dir"
- break
- fi
- done
- # Try with that one
- LIBS="-l$bnv_qt_lib $X_PRE_LIBS $X_LIBS -lX11 -lXext -lXmu -lXt -lXi $X_EXTRA_LIBS"
- AC_TRY_LINK([#include <$qt_direct_test_header>],
- $qt_direct_test_main,
- [
- # Success.
- # We can link with no special library directory.
- bnv_qt_lib_dir=
- ], [
- # Leave bnv_qt_lib_dir defined
- ])
- ])
- ])
- ])
- if test x"$bnv_qt_lib_dir" != x; then
- bnv_qt_LIBS="-L$bnv_qt_lib_dir $LIBS"
- else
- bnv_qt_LIBS="$LIBS"
- fi
- LIBS="$bnv_save_LIBS"
- CXXFLAGS="$bnv_save_CXXFLAGS"
- fi dnl $with_Qt_lib_dir was not given
- fi dnl Done setting up for non-traditional Trolltech installation
-])
-
-#
-# EOF
-#
+++ /dev/null
-dnl -*- mode: autoconf -*-
-dnl
-dnl $Id$
-dnl template for the configuration script for the Alice HLT
-dnl Online Monitoring GUI
-dnl
-dnl ------------------------------------------------------------------
-AC_INIT([Alice HLT Online Monitoring GUI] , [1.5.3], [thaeder@kip.uni-heidelberg.de], AliHLTGUI)
-
-dnl ------------------------------------------------------------------
-AC_CANONICAL_SYSTEM
-AC_PREFIX_DEFAULT(${PWD})
-AC_CONFIG_SRCDIR(src/AliHLTGUI.cxx)
-AM_INIT_AUTOMAKE
-AC_PROG_CC
-AC_PROG_CXX
-AC_PROG_LIBTOOL
-
-AC_DEBUG
-AC_OPTIMIZATION
-
-dnl ------------------------------------------------------------------
-AC_MSG_CHECKING([whether to apply strict checking])
-AC_ARG_ENABLE(strict,
- [AC_HELP_STRING([--disable-strict],
- [disable the strict checking of dependencies during configure])],
- [],[enable_strict=yes])
-AC_MSG_RESULT([$enable_strict])
-
-dnl ------------------------------------------------------------------
-dnl
-dnl Check for Trolltechs Qt
-dnl
-BNV_HAVE_QT
-test "x$have_qt" = "xno" && AC_ERROR([Stop! The package needs Qt])
-AC_SUBST([QT_LIBS])
-AC_SUBST([QT_DIR])
-
-dnl ------------------------------------------------------------------
-dnl
-dnl Check for ROOT
-dnl
-ROOT_PATH(5.08, [have_root=1], [AC_ERROR([Stop! The package needs ROOT 5.08 or later.])])
-AM_CONDITIONAL(HAVE_ROOT, test "x$have_root" = "x1" )
-AC_SUBST([ROOTSYS])
-ROOTBINDIR=`dirname $ROOTEXEC`
-AC_SUBST([ROOTBINDIR])
-
-dnl test for additional required root libraries and headers
-LIBS='-ldl'
-if test "x$have_root" = "x1"; then
- AC_LANG_PUSH(C++)
- save_CPPFLAGS=$CPPFLAGS
- save_LDFLAGS=$LDFLAGS
- save_LIBS=$LIBS
- #CPPFLAGS=`echo $save_CPPFLAGS; for i in ${ROOTINCDIR}; do echo -n "-I$i " ; done`
-
- # we check for the libSTEER library which is linked to
- # - the ROOT libs libGeom libMinuit libVMC libEG
- # - the AliRoot libESD libRAWData (libRAWDatarec from v4-04-Rev-07)
- # - ROOT libCint needs also libdl
- # - from Nov 1 2006 TTreeFormula is needed by AliTagAnalysis and requires
- # libTreePlayer.so
- # - from Jan 07 libESD also depends on libXMLIO
- # - libSTEER depends on libProofPlayer since Oct 2007 (after v4-07-Release)
- ROOT_CHECKLIBS='Geom Minuit EG VMC TreePlayer XMLIO Thread Proof ProofPlayer'
- for CHECKLIB in $ROOT_CHECKLIBS ; do
- CPPFLAGS="$save_CPPFLAGS ${ROOTCFLAGS}"
- LDFLAGS="$save_LDFLAGS -L${ROOTLIBDIR}"
- LIBS="$save_LIBS $ROOTLIBS $ADD_ROOTLIBS"
- AC_CHECK_LIB([$CHECKLIB],[_init], [ADD_ROOTLIBS="$ADD_ROOTLIBS -l$CHECKLIB"])
- done
-
-dnl in order to have the configure.ac somewhat similar to the AliRoot HLT module's
-dnl one we keep this three lines commented. The build system of this package
-dnl might be changed later in order to pu the ROOT CPPFLAGS, LDFLAGS and LIBS
-dnl directly into the Makefile.am
-dnl CPPFLAGS=$save_CPPFLAGS
-dnl LDFLAGS=$save_LDFLAGS
-dnl LIBS=$save_LIBS
-fi
-
-
-dnl ------------------------------------------------------------------
-dnl check for AliRoot features
-AC_LANG_PUSH(C++)
-have_aliroot=no
-AC_ARG_WITH(aliroot,[ --with-aliroot top of the AliRoot installation],
- [test -d $with_aliroot && ALICE_ROOT=$with_aliroot],
- [])
-
-if test "x$ALICE_ROOT" != "x" && test -d $ALICE_ROOT ; then
- dnl ------------------------------------------------------------------
- dnl Try to estimate the system architecture
- case $host_os:$host_cpu in
- linux*:x86_64*) alice_target='linuxx8664gcc' ;;
- linux*) alice_target='linux' ;;
- *) alice_target='unknown' ;;
- esac
- if test "x$alice_target" = "xunknown" ; then
- if test -z $ALICE_TARGET ; then
- AC_MSG_ERROR([Can not estimate system architecture.
- To avoid the problem, set the ALICE_TARGET variable appropriately.
- Please send the following information to Matthias.Richter@ift.uib.no:
- ${PACKAGE}: no AliRoot target definition for os=$host_os and cpu=$host_cpu ])
- else
- AC_MSG_NOTICE([Unknown system architecture.
- Please send the following information to Matthias.Richter@ift.uib.no:
- ${PACKAGE}: no AliRoot target definition for os=$host_os and cpu=$host_cpu ])
- fi
- else
- if test "x$ALICE_TARGET" != "x" && test "x$ALICE_TARGET" != "x$alice_target" ; then
- AC_MSG_WARN([The ALICE_TARGET variable does not match your current system
- overriding $ALICE_TARGET by $alice_target])
- fi
- ALICE_TARGET=$alice_target
- fi
- ALIROOTBINDIR=${ALICE_ROOT}/bin/tgt_${ALICE_TARGET}
- ALIROOTLIBDIR=${ALICE_ROOT}/lib/tgt_${ALICE_TARGET}
- ALIROOTINCDIR=${ALICE_ROOT}/include
- test -d ${ALIROOTBINDIR} || AC_MSG_WARN([can not find AliRoot binary directory $ALIROOTBINDIR])
- test -d ${ALIROOTLIBDIR} || AC_MSG_WARN([can not find AliRoot library directory $ALIROOTLIBDIR])
- test -d ${ALIROOTINCDIR} || AC_MSG_WARN([can not find AliRoot include directory $ALIROOTINCDIR])
-fi
-
-AC_MSG_CHECKING([for AliRoot])
-if test "x$ALICE_ROOT" != "x" \
- && test -d ${ALIROOTBINDIR} \
- && test -d ${ALIROOTLIBDIR} \
- && test -d ${ALIROOTINCDIR}; then
- have_aliroot=$ALICE_ROOT
-else
- ALIROOTBINDIR=
- ALIROOTLIBDIR=
- ALIROOTINCDIR=
-fi
-AC_MSG_RESULT([$have_aliroot])
-
-if test ! "x$have_aliroot" = "xno" ; then
- ALIROOT_CPPFLAGS="-I${ALIROOTINCDIR} -I${ALICE_ROOT}/RAW"
- ALIROOT_LDFLAGS="-L${ALIROOTLIBDIR}"
- ALIROOT_LIBS="-lESD $ADD_ROOTLIBS"
- save_CPPFLAGS=$CPPFLAGS
- save_LDFLAGS=$LDFLAGS
- save_LIBS=$LIBS
- CPPFLAGS="$save_CPPFLAGS $ALIROOT_CPPFLAGS"
- LDFLAGS="$save_LDFLAGS -L${ROOTLIBDIR} $ALIROOT_LDFLAGS"
-
- # check for certain AliRoot libraries/files/features
- # libSTEERBase present since Aug 7 2007
- LIBS="$save_LIBS $ROOTLIBS $ALIROOT_LIBS"
- CHECKLIB=STEERBase
- AC_CHECK_LIB([$CHECKLIB],[_init],[ALIROOT_LIBS="$ALIROOT_LIBS -l$CHECKLIB"])
-
- LIBS="$save_LIBS $ROOTLIBS $ALIROOT_LIBS"
- CHECKLIB=AOD
- AC_CHECK_LIB([$CHECKLIB],[_init],[ALIROOT_LIBS="$ALIROOT_LIBS -l$CHECKLIB"])
-
- # splitted RAW libraries since AliRoot version v4-04-Rev-07 (09.08.2006)
- have_alirawdata=no
- LIBS="$save_LIBS $ROOTLIBS $ALIROOT_LIBS"
- CHECKLIB=RAWDatabase
- AC_CHECK_LIB([$CHECKLIB],[_init],
- [ALIROOT_LIBS="$ALIROOT_LIBS -l$CHECKLIB"
- LIBS="$save_LIBS $ROOTLIBS $ALIROOT_LIBS"
- CHECKLIB=RAWDatarec
- AC_CHECK_LIB([$CHECKLIB],[_init],
- [ALIROOT_LIBS="$ALIROOT_LIBS -l$CHECKLIB"
- AC_DEFINE(HAVE_ALIRAWDATA)
- have_alirawdata=$CHECKLIB])],
- [# second pass with -RAWData
- CHECKLIB="-lRAWData"
- LIBS="$save_LIBS $ROOTLIBS $ALIROOT_LIBS $CHECKLIB -lSTEER"
- AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <AliRawReaderMemory.h>
- #include <AliRawReaderFile.h>
- #include <AliRawReaderDate.h>
- #include <AliRawReaderRoot.h>],
- [AliRawReaderMemory mreader;
- AliRawReaderFile freader;
- AliRawReaderDate dreader(NULL,0);
- AliRawReaderRoot rreader(NULL,0);])],
- [AC_DEFINE(HAVE_ALIRAWDATA)
- ALIROOT_LIBS="$ALIROOT_LIBS $CHECKLIB"
- have_alirawdata=$CHECKLIB],
- [have_alirawdata=no
- have_aliroot=no])
- ]) dnl AC_CHECK_LIB RAWDatabase
- AC_MSG_CHECKING([for AliRawReader classes in RAWData libraries])
- AC_MSG_RESULT([$have_alirawdata])
-
- # CBD library is present since AliRoot version v4-05-00 (02.06.2006)
- LIBS="$save_LIBS $ROOTLIBS $ALIROOT_LIBS -lSTEER"
- CHECKLIB=CDB
- AC_CHECK_LIB([$CHECKLIB],[_init],[ALIROOT_LIBS="$ALIROOT_LIBS -l$CHECKLIB"])
-
- LIBS="$save_LIBS $ROOTLIBS $ALIROOT_LIBS"
- CHECKLIB=STEER
- AC_CHECK_LIB([$CHECKLIB],[_init],[ALIROOT_LIBS="$ALIROOT_LIBS -l$CHECKLIB"],
- [have_aliroot=no])
-
- if test "x$have_aliroot" = "xno" ; then
- # 2007-08-18 dont reset ALIROOT_CPPFLAGS in order to allow compilation
- # but library dependencies might not be resolved completely
- ALIROOT_CPPFLAGS=
- AC_MSG_WARN([some of the AliRoot library dependencies are not resolved.
- This can happen from time to time due to development in AliRoot. You can
- force compilation of detector libs by --enable-<detector>, but be aware
- of unresolved references at runtime.])
- AC_MSG_WARN([ ------------------------------------------ ])
- AC_MSG_WARN([ Report this to $PACKAGE_BUGREPORT ])
- AC_MSG_WARN([ please include config.log ])
- AC_MSG_WARN([ ------------------------------------------ ])
- ALIROOT_LDFLAGS=
- ALIROOT_LIBS=
- fi
- CPPFLAGS=$save_CPPFLAGS
- LDFLAGS=$save_LDFLAGS
- LIBS=$save_LIBS
-fi
-
-test "x$have_aliroot" = "xno" && \
- test "x$enable_strict" != "xno" && \
- AC_ERROR([Stop! The package needs AliRoot libraries. Check your setup])
-
-AC_SUBST([ALIROOTLIBDIR])
-AC_SUBST([ALIROOT_CPPFLAGS])
-AC_SUBST([ALIROOT_LDFLAGS])
-AC_SUBST([ALIROOTBINDIR])
-AC_SUBST([ALIROOTLIBDIR])
-AC_SUBST([ALIROOT_LIBS])
-
-dnl ------------------------------------------------------------------
-dnl Check for the AliHLTTPCLibrary
-dnl
-AC_ARG_WITH(alihlt, [ --with-alihlt top of the AliRoot HLT module],
- [],
- [ test -n $ALIHLT_PREFIX && with_alihlt=$ALIHLT_PREFIX])
-if ! test -z ${with_alihlt} \
- && test -d ${with_alihlt} \
- && test "x${with_alihlt}" != "x$ALICE_ROOT" ; then
- ALIHLT_INCDIRS="${with_alihlt}/include/alice-hlt"
- ALIHLT_LIBDIR=${with_alihlt}/lib
-else
- ALIHLT_INCDIRS="${ALICE_ROOT}/HLT/BASE ${ALICE_ROOT}/HLT/BASE/HOMER"
- ALIHLT_LIBDIR=${ALICE_ROOT}/lib/tgt_${ALICE_TARGET}
-fi
-ALIHLT_CPPFLAGS=`for i in ${ALIHLT_INCDIRS}; do echo -I$i ; done`
-ALIHLT_LDFLAGS="-L$ALIHLT_LIBDIR"
-
-ALIHLT_LIBS='-lHLTbase -lAliHLTTPC -lAliHLTTPCDisplay'
-save_CPPFLAGS=$CPPFLAGS
-save_LDFLAGS=$LDFLAGS
-save_LIBS=$LIBS
-CPPFLAGS="$ALIHLT_CPPFLAGS $save_CPPFLAGS $ALIROOT_CPPFLAGS"
-LDFLAGS="$ALIHLT_LDFLAGS $save_LDFLAGS $ALIROOT_LDFLAGS $HOMER_LDFLAGS"
-LIBS="$save_LIBS $ALIHLT_LIBS $ALIROOT_LIBS $HOMER_LIBS"
-export LD_LIBRARY_PATH="$ALIHLT_LIBDIR:$HOMER_LIBDIR:$LD_LIBRARY_PATH"
-
-have_alitpcdisplay=yes
-ALIHLTTPCDISPLAY_VERSION=0
-AC_CHECK_LIB([AliHLTTPCDisplay],[__libAliHLTTPCDisplayProperties],
- [
-# AC_MSG_NOTICE([$LD_LIBRARY_PATH])
- AC_MSG_CHECKING(AliHLTTPCDisplay library for HOMER support)
- AC_RUN_IFELSE([AC_LANG_PROGRAM([#include <string.h>
- #include <stdio.h>
- extern const char* __libAliHLTTPCDisplayProperties;],
- [FILE* fp=fopen("conftest.out", "w");
- if (fp) {fprintf(fp, __libAliHLTTPCDisplayProperties);fclose(fp);}
- // return 0 (success) if string was found (!=NULL)
- return (strstr(__libAliHLTTPCDisplayProperties, "HOMER")==NULL)])],
- [test -f conftest.out && echo -n "library properties: `cat conftest.out` "
- ALIHLTTPCDISPLAY_VERSION=1],
- [have_alitpcdisplay=no
- test -f conftest.out && echo "library properties: `cat conftest.out`"
- test "x$enable_strict" != "xno" && AC_MSG_ERROR([Stop! The AliHLTTPCDisplay library must be compiled with HOMER support])])
- ],
- [
- AC_MSG_CHECKING(for usability of the AliHLTTPCDisplay library)
- if test ! "x$have_alitpcdisplay" = "xno" ; then
- AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <AliHLTTPCDisplayMain.h>],
- [AliHLTTPCDisplayMain display(NULL,NULL)])],
- [],
- [have_alitpcdisplay=no])
- fi
- ])
-AC_MSG_RESULT($have_alitpcdisplay)
-test "x$have_alitpcdisplay" != "xyes" && \
- test "x$enable_strict" != "xno" && \
- AC_ERROR([Stop! The package needs the AliHLTTPCDisplay library.
- Use --with-alihlt option to point to the AliRoot HLT module installation])
-
-AC_MSG_CHECKING([version of AliHLTTPCDisplay library])
-if test $ALIHLTTPCDISPLAY_VERSION -gt 0 ; then
-AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <AliHLTTPCDisplayMain.h>],
- [AliHLTTPCDisplayMain dm(NULL,NULL) ;
- dm.SetZeroSuppression(0);
- dm.GetNTimeBins();
- dm.SetTimeBinMinMax(0,1);
- dm.SetFrontDataSwitch(0);
- dm.Set3DRawSwitch(0)])],
- [ALIHLTTPCDISPLAY_VERSION=2],
- [])
-fi
-AC_MSG_RESULT([$ALIHLTTPCDISPLAY_VERSION])
-
-CPPFLAGS=$save_CPPFLAGS
-LDFLAGS=$save_LDFLAGS
-LIBS=$save_LIBS
-
-AC_SUBST([ALIHLT_INCDIRS])
-AC_SUBST([ALIHLT_LIBDIR])
-AC_SUBST([ALIHLT_CPPFLAGS])
-AC_SUBST([ALIHLT_LDFLAGS])
-AC_SUBST([ALIHLT_LIBS])
-AC_SUBST([ALIHLTTPCDISPLAY_VERSION])
-
-AC_LANG_POP(C++)
-
-dnl ------------------------------------------------------------------
-dnl check for the HLT PubSub Framework
-dnl namely for the existence of the HOMER library
-dnl from Sep 2007, the HOMER lib has been incorporated into the alice-hlt
-dnl package. It os though possible to choose an external. library
-dnl In order to make the origni of the HOMER lib clear, the one in AliRoot
-dnl got the name libAliHLTHOMER
-AC_MSG_CHECKING([for HLT PubSub Framework])
-AC_ARG_WITH(pubsub, [installation path of the HLT PubSub framework],
- [],
- [ test -n $ALIHLT_DC_DIR && with_pubsub=$ALIHLT_DC_DIR ])
-if test -z $with_pubsub || ! test -d $with_pubsub ; then
- with_pubsub=no
-fi
-AC_MSG_RESULT([$with_pubsub])
-HOMER_VERSION=2
-HOMER_LIBS=
-
-AH_TEMPLATE([HAVE_HOMERREADER],[the HLT PubSub Homer Reader interface])
-if test "x$with_pubsub" != "xno" ; then
- save_CPPFLAGS=$CPPFLAGS
- save_LDFLAGS=$LDFLAGS
- save_LIBS=$LIBS
- # currently the different versions of the HLT PubSub framework have a different
- # directory layout
- if test -d ${with_pubsub}/include/HOMER ; then
- # the 'early' location of the include files with separated HOMER sub dirs
- HOMER_INCDIRS="${with_pubsub}/include/HOMER ${with_pubsub}/include/HOMER/reader"
- elif test -d ${with_pubsub}/include/Util/HOMER ; then
- # location for HLT Framework versions after Sep 2006
- HOMER_INCDIRS="${with_pubsub}/include/Util/HOMER"
- elif test -d ${with_pubsub}/src/Util/HOMER/include ; then
- # fall back if include files were not installed (versions after Sep 06)
- HOMER_INCDIRS="${with_pubsub}/src/Util/HOMER/include"
- else
- # fall back if include files were not installed (versions before Sep 06)
- HOMER_INCDIRS="${with_pubsub}/src/Util/HOMER/reader/include ${with_pubsub}/src/Util/HOMER/data/include"
- fi
- HOMER_CPPFLAGS=`for i in ${HOMER_INCDIRS}; do echo -n "-I$i " ; done`
-
- AC_ARG_ENABLE(pubsub-debug,
- [AC_HELP_STRING([--disable-pubsub-debug],
- [force the production version of the PubSub framework])],
- [],[enable_pubsub_debug=yes])
- homer_type="none"
- HOMER_TARGET="`uname -s`-`uname -m`"
- AC_MSG_CHECKING([for HLT PubSub Framework release type])
- if test -d "${with_pubsub}/lib/${HOMER_TARGET}-release" ; then
- homer_type="production"
- HOMER_TARGET="${HOMER_TARGET}-release"
- elif test "x$enable_pubsub_debug" = "xyes" && test -d "${with_pubsub}/lib/${HOMER_TARGET}-debug" ; then
- homer_type="debug"
- HOMER_TARGET="${HOMER_TARGET}-debug"
- fi
- AC_MSG_RESULT([${homer_type}])
- HOMERREADER_HEADER=HOMERReader.h
- HOMER_BINDIR="${with_pubsub}/bin/${HOMER_TARGET}"
- HOMER_LIBDIR="${with_pubsub}/lib/${HOMER_TARGET}"
- HOMER_LDFLAGS="-L${HOMER_LIBDIR}"
- CHECK_LIB=HOMER
- CPPFLAGS="$save_CPPFLAGS $HOMER_CPPFLAGS"
- LDFLAGS="$save_LDFLAGS $HOMER_LDFLAGS"
- LIBS="$save_LIBS "
-else
- HOMERREADER_HEADER=AliHLTHOMERReader.h
- HOMER_BINDIR=
- HOMER_LIBDIR=$ALIHLT_LIBDIR
- HOMER_LDFLAGS="-L${HOMER_LIBDIR}"
- CHECK_LIB=AliHLTHOMER
- HOMER_CPPFLAGS=`for i in ${ALIHLT_INCDIRS}; do echo -I$i ; done`
- CPPFLAGS="$save_CPPFLAGS $HOMER_CPPFLAGS"
- LDFLAGS="$save_LDFLAGS $HOMER_LDFLAGS"
- LIBS="$save_LIBS "
-fi
- with_homer=no
- AC_LANG_PUSH(C++)
- AC_CHECK_HEADER([$HOMERREADER_HEADER],
- [ AC_CHECK_LIB([$CHECK_LIB],[_init],
- [with_homer=yes
- HOMER_LIBS="-l$CHECK_LIB"],
- [ AC_CHECK_LIB([HOMERReader],[_init],
- [with_homer=yes
- HOMER_LIBS="-lHOMERReader"])])
- LIBS="$LIBS $HOMER_LIBS"
- AC_MSG_CHECKING([version of HOMER library])
- dnl The Homer library has no versioning, so we do our own
- dnl version description
- dnl ----------------------------------------------------------------------
- dnl 1 inintial version
- dnl 2 GetBlockStatusFlags added to the interface
- AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <$HOMERREADER_HEADER>],
- [HOMERReader reader((const void*)0, (int)0);
- reader.GetBlockStatusFlags(0);])],
- [],
- [HOMER_VERSION=1])
- AC_MSG_RESULT([$HOMER_VERSION])
- ],
- [HOMERREADER_HEADER=]) #AC_CHECK_HEADER([$HOMERREADER_HEADER])
- AC_LANG_POP(C++)
- if test "x$with_homer" = "xno" ; then
- HOMER_CPPFLAGS=
- HOMER_LDFLAGS=
- HOMER_LIBS=
- else
- HOMER_CPPFLAGS="$HOMER_CPPFLAGS -DHOMER_VERSION=$HOMER_VERSION"
- AC_DEFINE(HAVE_HOMERREADER)
- fi
- CPPFLAGS="$save_CPPFLAGS"
- LDFLAGS="$save_LDFLAGS"
- LIBS="$save_LIBS"
-
-test "x$with_homer" != "xyes" && \
- test "x$enable_strict" != "xno" && \
- AC_ERROR([Stop! The package needs the HOMER library.
- Use --with-pubsub option to point to the HLT PubSub installation])
-
-AC_SUBST([HOMER_CPPFLAGS])
-AC_SUBST([HOMER_LDFLAGS])
-AC_SUBST([HOMER_LIBDIR])
-AC_SUBST([HOMER_BINDIR])
-AC_SUBST([HOMER_INCDIRS])
-AC_SUBST([HOMER_LIBS])
-
-
-dnl ------------------------------------------------------------------
-dnl
-dnl Documentation
-dnl
-AC_ARG_VAR(DOXYGEN, The Documentation Generator)
-AC_PATH_PROG(PERL, perl)
-AC_PATH_PROG(DOXYGEN, doxygen)
-AM_CONDITIONAL(HAVE_DOXYGEN, test ! "x$DOXYGEN" = "x")
-HAVE_DOT=NO
-DOT_PATH=
-AC_PATH_PROG(DOT, dot)
-if ! test "x$DOT" = "x" ; then
- HAVE_DOT=YES
- DOT_PATH=`dirname $DOT`
-fi
-AC_SUBST([HAVE_DOT])
-AC_SUBST([DOT_PATH])
-
-dnl ------------------------------------------------------------------
-AC_CONFIG_FILES([Makefile
- doc/Makefile
- doc/doxygen.conf
- src/startAliHLTGUI
- src/flags])
-
-
-AC_OUTPUT
-dnl
-dnl EOF
-dnl
-
+++ /dev/null
-# Makefile template for the Alice HLT Online Monitoring GUI documentation
-#
-#/************************************************************************
-#**
-#** ALICE HLT Online Monitoring project
-#** Copyright (c) 2005
-#**
-#** This file is property of and copyright by the Computer Science/Computer
-#** Engineering Group, Kirchhoff Institute for Physics, Ruprecht-Karls-
-#** University, Heidelberg, Germany, 2005
-#** This file has been written by Jochen Thaeder,
-#** thaeder@kip.uni-heidelberg.de
-#**
-#**
-#** See the file license.txt for details regarding usage, modification,
-#** distribution and warranty.
-#** Important: This file is provided without any warranty, including
-#** fitness for any particular purpose.
-#**
-#**
-#** Newer versions of this file's package will be made available from
-#** http://www.kip.uni-heidelberg.de/ti/HLT/
-#** or the corresponding page of the Heidelberg Alice HLT group.
-#**
-#*************************************************************************/
-
-EXTRA_DIST = mainpage.c
-
-DISTCLEANFILES = doxy.log $(PACKAGE).tags
-if HAVE_DOXYGEN
-HTML = html/index.html
-TAGS = $(PACKAGE).tags
-else
-HTML =
-TAGS =
-endif
-
-%.png:%.fig
- fig2dev -Lpng $<
-
-all-local:$(HTML) $(PDF)
-
-
-clean-local:
- rm -rf *~ html latex man
-
-html/index.html $(PACKAGE).tags: doxygen.conf Makefile mainpage.c
- $(DOXYGEN) $<
-
-tar-ball:$(HTML)
- if test -f html/index.html ; then \
- mv html $(PACKAGE) ; \
- tar -czvf ../$(PACKAGE)-$(VERSION)-doc.tar.gz $(PACKAGE) ; \
- mv $(PACKAGE) html ; fi
-
-#
-# EOF
-#
+++ /dev/null
-#
-
-#---------------------------------------------------------------------------
-# General configuration options
-#---------------------------------------------------------------------------
-PROJECT_NAME = "@PACKAGE_NAME@"
-PROJECT_NUMBER = @PACKAGE_VERSION@
-OUTPUT_DIRECTORY = .
-OUTPUT_LANGUAGE = English
-USE_WINDOWS_ENCODING = NO
-BRIEF_MEMBER_DESC = NO
-REPEAT_BRIEF = YES
-ALWAYS_DETAILED_SEC = YES
-INLINE_INHERITED_MEMB = NO
-FULL_PATH_NAMES = NO
-STRIP_FROM_PATH =
-SHORT_NAMES = NO
-JAVADOC_AUTOBRIEF = YES
-MULTILINE_CPP_IS_BRIEF = NO
-DETAILS_AT_TOP = YES
-INHERIT_DOCS = YES
-DISTRIBUTE_GROUP_DOC = NO
-TAB_SIZE = 8
-GENERATE_TESTLIST = YES
-GENERATE_BUGLIST = YES
-ALIASES =
-OPTIMIZE_OUTPUT_FOR_C = YES
-OPTIMIZE_OUTPUT_JAVA = NO
-SUBGROUPING = YES
-
-#---------------------------------------------------------------------------
-# Build related configuration options
-#---------------------------------------------------------------------------
-EXTRACT_ALL = YES
-EXTRACT_PRIVATE = YES
-EXTRACT_STATIC = YES
-EXTRACT_LOCAL_CLASSES = YES
-HIDE_UNDOC_MEMBERS = NO
-HIDE_UNDOC_CLASSES = NO
-HIDE_FRIEND_COMPOUNDS = NO
-HIDE_IN_BODY_DOCS = YES
-INTERNAL_DOCS = NO
-CASE_SENSE_NAMES = YES
-HIDE_SCOPE_NAMES = NO
-SHOW_INCLUDE_FILES = YES
-INLINE_INFO = YES
-SORT_MEMBER_DOCS = YES
-GENERATE_TODOLIST = YES
-GENERATE_DEPRECATEDLIST= YES
-ENABLED_SECTIONS =
-MAX_INITIALIZER_LINES = 30
-SHOW_USED_FILES = YES
-#---------------------------------------------------------------------------
-# configuration options related to warning and progress messages
-#---------------------------------------------------------------------------
-QUIET = YES
-WARNINGS = YES
-WARN_IF_UNDOCUMENTED = YES
-WARN_IF_DOC_ERROR = YES
-WARN_FORMAT = "$file:$line: $text"
-WARN_LOGFILE =
-#---------------------------------------------------------------------------
-# configuration options related to the input files
-#---------------------------------------------------------------------------
-INPUT = @top_srcdir@/doc \
- @top_srcdir@/src
-FILE_PATTERNS = *.h *.c *.cpp *.hpp *.cxx
-RECURSIVE = YES
-EXCLUDE =
-EXCLUDE_SYMLINKS = NO
-EXCLUDE_PATTERNS =
-EXAMPLE_PATH =
-EXAMPLE_PATTERNS =
-EXAMPLE_RECURSIVE = NO
-IMAGE_PATH =
-#IMAGE_PATH = @srcdir@/pics
-INPUT_FILTER =
-FILTER_SOURCE_FILES = NO
-#---------------------------------------------------------------------------
-# configuration options related to source browsing
-#---------------------------------------------------------------------------
-SOURCE_BROWSER = NO
-INLINE_SOURCES = NO
-STRIP_CODE_COMMENTS = YES
-REFERENCED_BY_RELATION = YES
-REFERENCES_RELATION = YES
-VERBATIM_HEADERS = NO
-#---------------------------------------------------------------------------
-# configuration options related to the alphabetical class index
-#---------------------------------------------------------------------------
-ALPHABETICAL_INDEX = YES
-COLS_IN_ALPHA_INDEX = 5
-IGNORE_PREFIX =
-#---------------------------------------------------------------------------
-# configuration options related to the HTML output
-#---------------------------------------------------------------------------
-GENERATE_HTML = YES
-HTML_OUTPUT = html
-HTML_FILE_EXTENSION = .html
-HTML_HEADER =
-HTML_FOOTER =
-HTML_STYLESHEET =
-HTML_ALIGN_MEMBERS = YES
-GENERATE_HTMLHELP = NO
-CHM_FILE =
-HHC_LOCATION =
-GENERATE_CHI = NO
-BINARY_TOC = NO
-TOC_EXPAND = NO
-DISABLE_INDEX = NO
-ENUM_VALUES_PER_LINE = 4
-GENERATE_TREEVIEW = NO
-TREEVIEW_WIDTH = 150
-#---------------------------------------------------------------------------
-# configuration options related to the LaTeX output
-#---------------------------------------------------------------------------
-GENERATE_LATEX = YES
-LATEX_OUTPUT = latex
-LATEX_CMD_NAME = latex
-MAKEINDEX_CMD_NAME = makeindex
-COMPACT_LATEX = YES
-PAPER_TYPE = a4wide
-EXTRA_PACKAGES =
-LATEX_HEADER =
-PDF_HYPERLINKS = YES
-USE_PDFLATEX = YES
-LATEX_BATCHMODE = NO
-LATEX_HIDE_INDICES = YES
-#---------------------------------------------------------------------------
-# configuration options related to the RTF output
-#---------------------------------------------------------------------------
-GENERATE_RTF = NO
-RTF_OUTPUT = rtf
-COMPACT_RTF = NO
-RTF_HYPERLINKS = NO
-RTF_STYLESHEET_FILE =
-RTF_EXTENSIONS_FILE =
-#---------------------------------------------------------------------------
-# configuration options related to the man page output
-#---------------------------------------------------------------------------
-GENERATE_MAN = NO
-MAN_OUTPUT = man
-MAN_EXTENSION = .3
-MAN_LINKS = NO
-#---------------------------------------------------------------------------
-# configuration options related to the XML output
-#---------------------------------------------------------------------------
-GENERATE_XML = NO
-XML_OUTPUT = xml
-XML_SCHEMA =
-XML_DTD =
-#---------------------------------------------------------------------------
-# configuration options for the AutoGen Definitions output
-#---------------------------------------------------------------------------
-GENERATE_AUTOGEN_DEF = NO
-#---------------------------------------------------------------------------
-# configuration options related to the Perl module output
-#---------------------------------------------------------------------------
-GENERATE_PERLMOD = NO
-PERLMOD_LATEX = NO
-PERLMOD_PRETTY = YES
-PERLMOD_MAKEVAR_PREFIX =
-#---------------------------------------------------------------------------
-# Configuration options related to the preprocessor
-#---------------------------------------------------------------------------
-ENABLE_PREPROCESSING = YES
-MACRO_EXPANSION = YES
-EXPAND_ONLY_PREDEF = NO
-SEARCH_INCLUDES = YES
-INCLUDE_PATH =
-INCLUDE_FILE_PATTERNS =
-PREDEFINED = "DOXYGEN_INPUT"
-EXPAND_AS_DEFINED =
-SKIP_FUNCTION_MACROS = YES
-#---------------------------------------------------------------------------
-# Configuration::addtions related to external references
-#---------------------------------------------------------------------------
-TAGFILES =
-GENERATE_TAGFILE = @PACKAGE@.tags
-ALLEXTERNALS = NO
-EXTERNAL_GROUPS = YES
-PERL_PATH = @PERL@
-#---------------------------------------------------------------------------
-# Configuration options related to the dot tool
-#---------------------------------------------------------------------------
-CLASS_DIAGRAMS = YES
-HIDE_UNDOC_RELATIONS = NO
-HAVE_DOT = @HAVE_DOT@
-CLASS_GRAPH = YES
-COLLABORATION_GRAPH = YES
-UML_LOOK = YES
-TEMPLATE_RELATIONS = YES
-INCLUDE_GRAPH = YES
-INCLUDED_BY_GRAPH = YES
-CALL_GRAPH = YES
-GRAPHICAL_HIERARCHY = YES
-DOT_IMAGE_FORMAT = png
-DOT_PATH = @DOT_PATH@
-DOTFILE_DIRS =
-MAX_DOT_GRAPH_WIDTH = 640
-MAX_DOT_GRAPH_HEIGHT = 640
-MAX_DOT_GRAPH_DEPTH = 0
-GENERATE_LEGEND = YES
-DOT_CLEANUP = YES
-#---------------------------------------------------------------------------
-# Configuration::addtions related to the search engine
-#---------------------------------------------------------------------------
-SEARCHENGINE = NO
+++ /dev/null
-/************************************************************************
-**
-** ALICE HLT Online Monitoring project
-** Copyright (c) 2005
-**
-** This file is property of and copyright by the Computer Science/Computer
-** Engineering Group, Kirchhoff Institute for Physics, Ruprecht-Karls-
-** University, Heidelberg, Germany, 2005
-** This file has been written by Jochen Thaeder,
-** thaeder@kip.uni-heidelberg.de
-**
-**
-** See the file license.txt for details regarding usage, modification,
-** distribution and warranty.
-** Important: This file is provided without any warranty, including
-** fitness for any particular purpose.
-**
-**
-** Newer versions of this file's package will be made available from
-** http://www.kip.uni-heidelberg.de/ti/HLT/
-** or the corresponding page of the Heidelberg Alice HLT group.
-**
-*************************************************************************/
-
-/** @file mainpage.c
- @author Jochen Thaeder
- @date
- @brief Title page documentation. */
-
-/** @mainpage ALICE HLT Online Monitoring GUI
-
- @section intro Introduction
-
- The Framwork implies serveral rules on the component implementation.
-
- @section overview Overview
-
- @section links Related links on the web
-
-
-*/
-
-#error Not for compilation
-//
-// EOF
-//
+++ /dev/null
-/**************************************************************************
- * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- * *
- * Authors: Jochen Thaeder <thaeder@kip.uni-heidelberg.de> *
- * for The ALICE Off-line Project. *
- * *
- * Permission to use, copy, modify and distribute this software and its *
- * documentation strictly for non-commercial purposes is hereby granted *
- * without fee, provided that the above copyright notice appears in all *
- * copies and that both the copyright notice and this permission notice *
- * appear in the supporting documentation. The authors make no claims *
- * about the suitability of this software for any purpose. It is *
- * provided "as is" without express or implied warranty. *
- **************************************************************************/
-
-/** @file AliHLTGUI.cxx
- @author Jochen Thaeder
- @date
- @brief Qt class for ALICE HLT online Display
-*/
-
-#if __GNUC__>= 3
-using namespace std;
-#endif
-
-#include <Rtypes.h>
-
-#include "AliHLTGUI.h"
-#include "AliHLTTPCDisplayMain.h"
-#include "AliHLTLogging.h"
-
-#include <TQtWidget.h>
-
-#include <qlabel.h>
-#include <qcheckbox.h>
-#include <qspinbox.h>
-#include <qbuttongroup.h>
-#include <qgroupbox.h>
-#include <qpushbutton.h>
-#include <qlineedit.h>
-#include <qlistview.h>
-#include <qslider.h>
-#include <qtabwidget.h>
-#include <qtimer.h>
-
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <unistd.h>
-#include <cstring>
-#include <cerrno>
-#include <iostream>
-#include <vector>
-
-
-// -- standard constructor
-//____________________________________________________________________________________________________
-AliHLTGUI::AliHLTGUI()
- :
- fDisplay(NULL),
- fHostnames(),
- fPorts(),
- padrowWidget(NULL),
- padWidget(NULL),
- residualsWidget(NULL),
- chargeWidget(NULL),
- threeDWidget(NULL),
- frontWidget(NULL),
- hits_sWidget(NULL),
- q_trackWidget(NULL),
- q_sWidget(NULL),
- padrow_padWidget(NULL),
- fEventLoop(NULL)
-{
-}
-
-// -- not a valid copy constructor, defined according to effective C++ style
-//____________________________________________________________________________________________________
-AliHLTGUI::AliHLTGUI(const AliHLTGUI& srcGUI)
- :
- fDisplay(srcGUI.fDisplay),
- fHostnames(srcGUI.fHostnames),
- fPorts(srcGUI.fPorts),
- padrowWidget(srcGUI.padrowWidget),
- padWidget(srcGUI.padWidget),
- residualsWidget(srcGUI.residualsWidget),
- chargeWidget(srcGUI.chargeWidget),
- threeDWidget(srcGUI.threeDWidget),
- frontWidget(srcGUI.frontWidget),
- hits_sWidget(srcGUI.hits_sWidget),
- q_trackWidget(srcGUI.q_trackWidget),
- q_sWidget(srcGUI.q_sWidget),
- padrow_padWidget(srcGUI.padrow_padWidget),
- fEventLoop(srcGUI.fEventLoop)
-{
- HLTFatal("copy constructor not implemented");
-}
-
-// -- not a valid assignment op, but defined according to effective C++ style
-//____________________________________________________________________________________________________
-AliHLTGUI& AliHLTGUI::operator=(const AliHLTGUI&) {
- HLTFatal("assignment operator not implemented");
- return (*this);
-}
-
-// -- constructor
-//____________________________________________________________________________________________________
-AliHLTGUI::AliHLTGUI( Int_t argc, Char_t **argv )
- :
- fDisplay(NULL),
- fHostnames(),
- fPorts(),
- padrowWidget(NULL),
- padWidget(NULL),
- residualsWidget(NULL),
- chargeWidget(NULL),
- threeDWidget(NULL),
- frontWidget(NULL),
- hits_sWidget(NULL),
- q_trackWidget(NULL),
- q_sWidget(NULL),
- padrow_padWidget(NULL),
- fEventLoop(NULL)
-{
- cout << "Creating display" << endl;
-
- // Set Widgets
- padrowWidget = tQtWidgetPadRow;
- residualsWidget = tQtWidgetResiduals;
- threeDWidget = tQtWidget3D;
- padWidget = tQtWidgetPad;
- chargeWidget = tQtWidgetCharge;
- frontWidget = tQtWidgetFront;
- hits_sWidget = tQtWidgetHits_s;
- q_trackWidget = tQtWidgetq_track;
- q_sWidget = tQtWidgetQ_s;
- padrow_padWidget = tQtWidgetPadRow_Pad;
-
- AliHLTTPCDisplayMain* display = new AliHLTTPCDisplayMain((void*) this, &AliHLTGUI::callback_setGUIPad);
- if ( !display ) {
- HLTFatal( "ERROR no Display!" );
- exit(-1);
- }
-
- fDisplay = (void*)display;
-
-
-#if STEP1
-
- display->RegisterCanvas( charge, chargeWidget->GetCanvas() );
- display->RegisterCanvas( padrow, padrowWidget->GetCanvas() );
- display->RegisterCanvas( threeD, threeDWidget->GetCanvas() );
- display->RegisterCanvas( pad, padWidget->GetCanvas() );
- display->RegisterCanvas( residuals, residualWidget->GetCanvas() );
- display->RegisterCanvas( front, frontWidget->GetCanvas() );
- display->RegisterCanvas( hits_s, hits_sWidget->GetCanvas() );
- display->RegisterCanvas( q_track, q_trackWidget->GetCanvas() );
- display->RegisterCanvas( q_s, q_sWidget->GetCanvas() );
- display->RegisterCanvas( padrow_pad, padrow_padWidget->GetCanvas() );
-
-#else
- // Set Canvas // TODO : REDO with enum
- display->SetCanvasCharge(chargeWidget->GetCanvas());
- display->SetCanvasPadRow(padrowWidget->GetCanvas());
- display->SetCanvas3D(threeDWidget->GetCanvas());
- display->SetCanvasPad(padWidget->GetCanvas());
- display->SetCanvasResiduals(residualsWidget->GetCanvas());
- display->SetCanvasFront(frontWidget->GetCanvas());
- display->SetCanvasHits_S(hits_sWidget->GetCanvas());
- display->SetCanvasQ_Track(q_trackWidget->GetCanvas());
- display->SetCanvasQ_S(q_sWidget->GetCanvas());
-#if ALIHLTTPCDISPLAY_VERSION >= 2
- display->SetCanvasPadRow_Pad(padrow_padWidget->GetCanvas());
-#endif
-
-#endif
-
-
- // -- Timer for Event-Loop
- // -----------------------
- fEventLoop = new QTimer( this );
- if ( !fEventLoop ) {
- HLTFatal( "ERROR no QTimer" );
- exit(-1);
- }
-
- connect( fEventLoop, SIGNAL(timeout()),this, SLOT(nextEvent()) );
-
- // -- read commandline arguments and set values in AliHLTTPCDiplayMain
- // -------------------------------------------------------------------
- Int_t ii = 0;
- Char_t* cpErr; // error string
- Int_t errocc = 0; // check if error occured
- Bool_t connectToSource = kFALSE; // check if connect to source on startup
-
-#if 0
- while ( ii < argc ) {
-
- // -- raw reader mode
- if ( !strcmp( argv[ii], "-rawreadermode" ) ) {
- if ( argc <= ii+1 ) {
- HLTError( "Raw Reader Mode not specified" );
- errocc = ENOTSUP;
- break;
- }
-
- Int_t readerMode = 0;
- if (readerMode < 0){
- HLTError ("Cannot convert rawreadermode specifier '%s'", argv[ii+1]);
- errocc = EINVAL;
- break;
- }
-
- // display->SetRawReaderMode( readerMode );
-
- ii += 2;
- continue;
- }
-
- // -- zero suppression threshold
- if ( !strcmp( argv[ii], "-adc-threshold" ) ) {
- if ( argc <= ii+1 ) {
- HLTError( "adc-threshold not specified" );
- errocc = ENOTSUP;
- break;
- }
-
- Int_t sigThresh = strtoul( argv[ii+1], &cpErr ,0 );
- if ( *cpErr ) {
- HLTError("Cannot convert adc-threshold specifier '%s'.", argv[ii+1]);
- errocc = EINVAL;
- break;
- }
-
- // display->SetZeroSuppressionThreshold(sigThresh);
-
- ii+=2;
- continue;
- }
-
- // -- pad occupancy limit
- if ( !strcmp( argv[ii], "-occupancy-limit" ) ) {
- if ( argc <= ii+1 ) {
- HLTError( "occupancy-limit not specified" );
- errocc = ENOTSUP;
- break;
- }
-
- Float_t occuLimit = strtof( argv[ii+1], &cpErr );
- if ( *cpErr ) {
- HLTError("Cannot convert occupancy-limit specifier '%s'.", argv[ii+1]);
- errocc = EINVAL;
- break;
- }
-
- // display->SetOccupancyLimit(occuLimit);
-
- ii+=2;
- continue;
- }
-
- // -- B field
- if ( !strcmp( argv[ii], "-b-field" ) ) {
- if ( argc <= ii+1 ) {
- HLTError( "b-field not specified" );
- errocc = ENOTSUP;
- break;
- }
-
- Float_t bfield = strtof( argv[ii+1], &cpErr );
- if ( *cpErr ) {
- HLTError("Cannot convert b-field specifier '%s'.", argv[ii+1]);
- errocc = EINVAL;
- break;
- }
-
- // display->SetBField( bfield )
-
- ii+=2;
- continue;
- }
-
- // -- N Time Bins
- if ( !strcmp( argv[ii], "-n-time-bins" ) ) {
- if ( argc <= ii+1 ) {
- HLTError( "n-time-bins not specified" );
- errocc = ENOTSUP;
- break;
- }
-
- Int_t nTimeBins = strtoul( argv[ii+1], &cpErr ,0);
- // check if already a number, if not check if "tpc" or "sim"
- if ( *cpErr ) {
- if ( !strcmp( argv[ii+1], "sim" ) )
- nTimeBins = 442;
- else if ( !strcmp( argv[ii+1], "tpc") )
- nTimeBins = 1024;
- else {
- HLTError("Cannot convert n-time-bins specifier '%s'.", argv[ii+1]);
- errocc = EINVAL;
- break;
- }
- }
-
- // display->SetNTimeBins( nTimeBins );
-
- ii+=2;
- continue;
- }
-
- // -- TCP soucre
- if ( !strcmp( argv[ii], "-tcp-source" ) ) {
- if ( argc <= ii+1 ) {
- HLTError( "-tcp-source not specified" );
- errocc = ENOTSUP;
- break;
- }
-
- Int_t sourceCount = 1;
-
- while ( 1 ){
- // break if more argc is exceeded
- if ( argc <= ii+sourceCount ) break;
-
- // check is next is new option and source count != 1 ( because at least 1 host:port is needed)
- if ( strstr( argv[ii + sourceCount], "-" ) ) {
- if ( sourceCount == 1 ){
- HLTError( "-tcp-source not specified" );
- errocc = ENOTSUP;
- }
- break;
- }
-
- // break if argument is no host:port
- if ( !strstr( argv[ii + sourceCount], ":" ) ) break;
-
- Char_t *host = strtok( argv[ii + sourceCount], ":" );
- Char_t *port = strtok( NULL, ":" );
-
- if ( !port ) {
- HLTError("Cannot convert tcp-source specifier '%s'.", argv[ii+1]);
- errocc = EINVAL;
- break;
- }
-
- // push in vector
- fHostnames.push_back( host );
- fPorts.push_back( port );
-
- // write in List
- QListViewItem * item1 = new QListViewItem( hostListView, host, port );
- hostListView->insertItem(item1);
-
- sourceCount++;
- } // while ( 1 ) {
-
- if ( errocc != 0 ) break;
-
- ii += sourceCount;
- continue;
- }
-
- // -- Connect
- if ( !strcmp( argv[ii], "--connect" ) ) {
-
- connectToSource = kTRUE;
-
- ii++;
- continue;
- }
-
- // -- Help
- if ( !strcmp( argv[ii], "--help" ) ) {
- cout << "Usage: AliHLTGUI [OPTON VALUE] ..." << endl;
- cout << " OPTIONs:\n --------" << endl;
- cout << " -n-time-bins <mode> Sets number of TimeBins for the TPC, can bei either a digit, 'sim' or 'tpc'." << endl;
- cout << " -adc-threshold <mode> Sets the ADC Threshold for the Zero-Suppression of raw data, should be ADC counts." << endl;
- cout << " -occupancy-limit <mode> Sets the Occupancy limits for pads, wherby <mode> is [0,1]." << endl;
- cout << " -b-field <mode> Sets the B-field." << endl;
- cout << " -tcp-source <host:port> ... Sets Host and Ports to a TCP port of a TCPDumpSubscriber. Multiple Connections can be given." << endl;
- cout << " -connect Connects already to given TCP-Sources." << endl;
- cout << " --help Shows the Help Menu." << endl;
- cout << " --version Prints version of AliHLTGUI" << endl;
-
- exit (0);
- }
-
- // -- Version
- if ( !strcmp( argv[ii], "--version" ) ) {
- cout << "Version of AliHLTGUI: " << PACKAGE_VERSION << endl;
-
- exit (0);
- }
-
- // -- Unknown Option
- HLTError( "Unknown Option", "Unknown option '%s'", argv[ii] );
- errocc = EINVAL;
- break;
- } // end while ( ii < argc ) {
-
-#endif
-
- // if error occured: Print usage and exit
- if ( errocc != 0 ) {
- cout << "Usage: AliHLTGUI [OPTON VALUE] ..." << endl;
- cout << " OPTIONs:\n --------" << endl;
- cout << " -n-time-bins <mode> Sets number of TimeBins for the TPC, can bei either a digit, 'sim' or 'tpc'." << endl;
- cout << " -adc-threshold <mode> Sets the ADC Threshold for the Zero-Suppression of raw data, should be ADC counts." << endl;
- cout << " -occupancy-limit <mode> Sets the Occupancy limits for pads, wherby <mode> is [0,1]." << endl;
- cout << " -b-field <mode> Sets the B-field." << endl;
- cout << " -tcp-source <host:port> ... Sets Host and Ports to a TCP port of a TCPDumpSubscriber. Multiple Connections can be given." << endl;
- cout << " -connect Connects already to given TCP-Sources." << endl;
- cout << " --help Shows the Help Menu." << endl;
- cout << " --version Prints version of AliHLTGUI" << endl;
- exit( errocc );
- }
-
-
- if ( connectToSource ) connectDisplay();
-
-}
-
-//____________________________________________________________________________________________________
-AliHLTGUI::~AliHLTGUI() {
- // -- destructor
-
- if (fEventLoop)
- delete fEventLoop;
- fEventLoop = NULL;
-
- AliHLTTPCDisplayMain* display = (AliHLTTPCDisplayMain*) fDisplay;
-
- if (display)
- delete display;
- fDisplay = NULL;
-}
-
-//____________________________________________________________________________________________________
-void AliHLTGUI::connectDisplay() {
- // -- connect to Display class / TCPDumpSubscriber
-
- AliHLTTPCDisplayMain* display = (AliHLTTPCDisplayMain*)fDisplay;
-
-
-#ifdef STEP2
- enableDisplay( display->GetConnectionStatus() );
-#else
- // if connected => diconnect
- if ( display->GetConnectionStatus() ) {
- cout << "Disonnecting..." << endl;
- display->SetConnectionStatus(kFALSE);
- // -- CONNECT-TAB
- connectPushButton->setText("Connect");
- connectTextLabel->setText("DISCONNECTED");
- connectTextLabel->setPaletteForegroundColor(red);
- HostListTextLabel->setEnabled(TRUE);
- hostListView->setEnabled(TRUE);
- removePushButton->setEnabled(TRUE);
- addGroupBox->setEnabled(TRUE);
- // -- DISPLAY-TAB
- eventGroupBox->setEnabled(FALSE);
-
-
-#if ALIHLTTPCDISPLAY_VERSION >= 2
- display->Disconnect();
-#else
- HLTWarning("disconnect not available for AliHLTTPCDisplay version < 2");
-#endif
-
- return;
- }
-#endif
-
- cout << "Connecting..." << endl;
-
-
- // -- Set geometry file in AliHLTTPCDisplayMain
- // --------------------------------------------
- Char_t * geometryPath = getenv("ALIHLT_TOPDIR");
- Char_t * geometryFile = "alice.geom";
-
- Char_t geoPath[256];
-
- strcpy(geoPath,"");
-
- if (geometryPath) {
- strcat(geoPath,geometryPath);
- strcat(geoPath,"/TPCLib/OnlineDisplay");
- }
- else strcat(geoPath,".");
-
- strcat(geoPath,"/");
- strcat(geoPath,geometryFile);
-
- // -- Set Hostnames in AliHLTTPCDisplayMain
- // ----------------------------------------
- Int_t cnt = fHostnames.size();
-
- if (cnt == 0){
- HLTError( "Error establishing connection: No Hostnames specified" );
- connectTextLabel->setText("ERROR");
- connectTextLabel->setPaletteForegroundColor(red);
- return;
- }
-
- unsigned short* ports = new unsigned short[cnt];
- const char** hostnames = new const char*[cnt];
-
- for ( Int_t i = 0; i < cnt; i++ ) {
- const char * temp = fHostnames[i].latin1();
- hostnames[i] = temp;
- ports[i] = (unsigned short) atoi(fPorts[i]);
- }
-
- Int_t connect = display->Connect( cnt, (const char**) hostnames, ports, geoPath);
-
- delete[] ports;
- delete[] hostnames;
-
- // check return value
- if ( connect == 0) {
- connectTextLabel->setText("CONNECTED");
- connectTextLabel->setPaletteForegroundColor(green);
- }
- else if (connect == -1){
- connectTextLabel->setText("NO CHAIN");
- connectTextLabel->setPaletteForegroundColor(red);
- return;
- }
- else if (connect == -2){
- connectTextLabel->setText("TIMEOUT");
- connectTextLabel->setPaletteForegroundColor(red);
- return;
- }
- else {
- connectTextLabel->setText("GENERAL ERROR");
- connectTextLabel->setPaletteForegroundColor(red);
- return;
- }
-#ifdef STEP3
-
- enableDataObjects();
-#else
- // if raw data present
- if ( display->ExistsRawData() ) {
- rawZeroGroupBox->setEnabled(TRUE);
- rawSliceGroupBox->setEnabled(TRUE);
- padrowGroupBox->setEnabled(TRUE);
- frontDataButtonGroup->setEnabled(TRUE);
- frontDisplayButtonGroup->setEnabled(TRUE);
- padrowCheckBox->setEnabled(TRUE);
- threeDRawButtonGroup->setEnabled(TRUE);
- }
- else {
- rawZeroGroupBox->setEnabled(FALSE);
- rawSliceGroupBox->setEnabled(FALSE);
- padrowGroupBox->setEnabled(FALSE);
- frontDataButtonGroup->setEnabled(FALSE);
- frontDisplayButtonGroup->setEnabled(FALSE);
- padrowCheckBox->setEnabled(FALSE);
- threeDRawButtonGroup->setEnabled(FALSE);
- }
-
-
- // if cluster data present
- if ( display->ExistsClusterData() ) {
- clusterCheckBox->setEnabled(TRUE);
- clusterPropButtonGroup->setEnabled(TRUE);
- }
- else {
- clusterCheckBox->setEnabled(FALSE);
- clusterPropButtonGroup->setEnabled(FALSE);
- }
-
- // if track data present
- if ( display->ExistsTrackData() ) {
- tracksCheckBox->setEnabled(TRUE);
- trackPropGroupBox->setEnabled(TRUE);
- selectTrackGroupBox->setEnabled(TRUE);
- trackParamGroupBox->setEnabled(TRUE);
- }
- else {
- tracksCheckBox->setEnabled(FALSE);
- trackPropGroupBox->setEnabled(FALSE);
- selectTrackGroupBox->setEnabled(FALSE);
- trackParamGroupBox->setEnabled(FALSE);
- }
-#endif
-
-#ifdef STEP2
- enableDisplay( display->GetConnectionStatus() );
-#else
- // -- CONNECT-TAB
- connectPushButton->setText("Disconnect");
- connectTextLabel->setText("READ DATA");
- connectTextLabel->setPaletteForegroundColor(green);
- HostListTextLabel->setEnabled(FALSE);
- hostListView->setEnabled(FALSE);
- removePushButton->setEnabled(FALSE);
- addGroupBox->setEnabled(FALSE);
-
- // -- DISPLAY-TAB
- eventGroupBox->setEnabled(TRUE);
- nextEventPushButton->setEnabled(TRUE);
- redisplayPushButton->setEnabled(TRUE);
- saveGroupBox->setEnabled(TRUE);
- sectorButtonGroup->setEnabled(TRUE);
- threeDGroupBox->setEnabled(TRUE);
-#endif
-
-
- display->ReadData(kFALSE);
- display->DisplayEvent();
-
- Char_t eventID[256] = "";
-#if ALIHLTTPCDISPLAY_VERSION >= 2
- sprintf(eventID,"%Lu",display->GetEventID());
-#endif
- sprintf(eventID,"%Lu",0);
- eventIDTextLabel->setText(eventID);
-
- displayTrackParam();
-}
-
-//____________________________________________________________________________________________________
-void AliHLTGUI::nextEvent(){
- // -- Display next event
- AliHLTTPCDisplayMain* display = (AliHLTTPCDisplayMain*)fDisplay;
- Int_t ret = 0;
-#if ALIHLTTPCDISPLAY_VERSION >= 2
- ret = display->ReadData();
-#else
- display->ReadData();
-#endif
- if (ret == -1){
- connectTextLabel->setText("NO CHAIN");
- setPaletteForegroundColor(red);
-
- // Stop of Event Loop
- if (!fEventLoop->isActive()){
- fEventLoop->stop();
- eventLoopPushButton->setText("Start Loop");
- }
-
- return;
- }
- else if (ret == -2) {
- connectTextLabel->setText("TIME OUT");
- connectTextLabel->setPaletteForegroundColor(red);
-
- // Stop of Event Loop
- if (!fEventLoop->isActive()){
- fEventLoop->stop();
- eventLoopPushButton->setText("Start Loop");
- }
-
- return;
- }
- else if (ret == -3) {
- connectTextLabel->setText("GENERAL ERROR");
- connectTextLabel->setPaletteForegroundColor(red);
-
- // Stop of Event Loop
- if (!fEventLoop->isActive()){
- fEventLoop->stop();
- eventLoopPushButton->setText("Start Loop");
- }
-
- return;
- }
- else {
- connectTextLabel->setText("READ DATA");
- connectTextLabel->setPaletteForegroundColor(green);
- }
-
- display->DisplayEvent();
-
- Char_t eventID[256] = "";
-#if ALIHLTTPCDISPLAY_VERSION >= 2
- sprintf(eventID,"%Lu",display->GetEventID());
-#endif
- sprintf(eventID,"%Lu",0);
- eventIDTextLabel->setText(eventID);
-
- displayTrackParam();
-}
-
-//____________________________________________________________________________________________________
-void AliHLTGUI::eventLoop(){
- // -- Start / Stop of Event Loop
- if (!fEventLoop->isActive()){
- fEventLoop->start(1000 * atoi( eventLoopSpinBox->text() ) );
- eventLoopPushButton->setText("Stop Loop");
- }
- else {
- fEventLoop->stop();
- eventLoopPushButton->setText("Start Loop");
- }
-}
-
-
-//____________________________________________________________________________________________________
-void AliHLTGUI::enableDisplay(Bool_t connected){
- AliHLTTPCDisplayMain* display = (AliHLTTPCDisplayMain*) fDisplay;
-
- Bool_t inverseconnected = ~connected; // TODO check!!
-
- // if already connected => disconnect
- // else disconnect => connect
-
- HostListTextLabel->setEnabled( connected );
- hostListView->setEnabled( connected );
- removePushButton->setEnabled( connected );
- addGroupBox->setEnabled( connected );
- eventGroupBox->setEnabled( inverseconnected );
-
- if ( connected ){
- cout << "Disonnecting..." << endl;
- display->SetConnectionStatus( inverseconnected );
- // -- CONNECT-TAB
- connectPushButton->setText("Connect");
- connectTextLabel->setText("DISCONNECTED");
- connectTextLabel->setPaletteForegroundColor(red);
-
-#if ALIHLTTPCDISPLAY_VERSION >= 2
- display->Disconnect();
-#else
- HLTWarning("disconnect not available for AliHLTTPCDisplay version < 2");
-#endif
-
- return;
- }
-
- else { // connected = false
- // -- CONNECT-TAB
- connectPushButton->setText("Disconnect");
- connectTextLabel->setText("READ DATA");
- connectTextLabel->setPaletteForegroundColor(green);
-
- // -- DISPLAY-TAB
- nextEventPushButton->setEnabled( inverseconnected );
- redisplayPushButton->setEnabled( inverseconnected );
- saveGroupBox->setEnabled( inverseconnected );
- sectorButtonGroup->setEnabled( inverseconnected );
- threeDGroupBox->setEnabled( inverseconnected );
- }
-
-}
-
-//____________________________________________________________________________________________________
-void AliHLTGUI::enableDataObjects(){
- AliHLTTPCDisplayMain* display = (AliHLTTPCDisplayMain*) fDisplay;
-
- Bool_t existsRawData = display->ExistsRawData();
- Bool_t existsClusterData = display->ExistsClusterData();
- Bool_t existsTrackData = display->ExistsTrackData();
-
- // -- RAW data
- rawZeroGroupBox->setEnabled(existsRawData);
- rawSliceGroupBox->setEnabled(existsRawData);
- padrowGroupBox->setEnabled(existsRawData);
- frontDataButtonGroup->setEnabled(existsRawData);
- frontDisplayButtonGroup->setEnabled(existsRawData);
- padrowCheckBox->setEnabled(existsRawData);
- threeDRawButtonGroup->setEnabled(existsRawData);
-
- // -- CLUSTER data
- clusterCheckBox->setEnabled(existsClusterData);
- clusterPropButtonGroup->setEnabled(existsClusterData);
-
- // -- TRACK data
- tracksCheckBox->setEnabled(existsTrackData);
- trackPropGroupBox->setEnabled(existsTrackData);
- selectTrackGroupBox->setEnabled(existsTrackData);
- trackParamGroupBox->setEnabled(existsTrackData);
-}
-
-//____________________________________________________________________________________________________
-void AliHLTGUI::updateEventLoop(){
- if (fEventLoop->isActive())
- fEventLoop->changeInterval(1000 * atoi( eventLoopSpinBox->text() ) );
-}
-
-//____________________________________________________________________________________________________
-void AliHLTGUI::redisplay(Bool_t newRawSlice){
- // -- ReDisplay current event
- AliHLTTPCDisplayMain* display = (AliHLTTPCDisplayMain*)fDisplay;
-#if ALIHLTTPCDISPLAY_VERSION >= 2
- display->DisplayEvent(newRawSlice);
-#else
- display->DisplayEvent();
-#endif
-
- displayTrackParam();
-}
-
-//____________________________________________________________________________________________________
-void AliHLTGUI::saveHistograms(){
- // -- save all Histograms
- AliHLTTPCDisplayMain* display = (AliHLTTPCDisplayMain*)fDisplay;
- display->SaveHistograms();
-}
-
-//____________________________________________________________________________________________________
-void AliHLTGUI::addHost(){
- // -- add host to hostlist
- // push in vector
- fHostnames.push_back( hostnameLineEdit->text() );
- fPorts.push_back( portSpinBox->text() );
-
- // write in List
- QListViewItem * item1 = new QListViewItem(hostListView, hostnameLineEdit->text(), portSpinBox->text() );
- hostListView->insertItem(item1);
-}
-
-//____________________________________________________________________________________________________
-void AliHLTGUI::removeHost(){
- // -- remove host from hostlist
- if (hostListView->selectedItem()) {
- for ( unsigned i = 0; i < fHostnames.size(); i++ ) {
- if ( fHostnames[i] == hostListView->selectedItem()->text(0) && fPorts[i] == hostListView->selectedItem()->text(1)){
- fHostnames.erase( fHostnames.begin()+i );
- fPorts.erase( fPorts.begin()+i );
- }
- }
- delete hostListView->selectedItem(); // #########
- // hostListView->removeItem(hostListView->selectedItem());
- }
-}
-
-//----------------------------------------------------------------------------------------------------
-// SETTER - minor functions
-//____________________________________________________________________________________________________
-void AliHLTGUI::setSector(){
- // -- set sectors to display
- AliHLTTPCDisplayMain* display = (AliHLTTPCDisplayMain*)fDisplay;
-
- Int_t selectSectorID = sectorButtonGroup->selectedId();
-
- // Set ALL Sectors
- if (selectSectorID == 0) {
- display->SetSlices();
- display->SetTheta(90.);
- }
- // Set ONE Sector
- else if (selectSectorID == 4) {
- display->SetSlices( atoi( oneSpinBox->text() ) );
- display->SetTheta(0.);
- }
- // Set RANGE of Sectors
- else if (selectSectorID == 1) {
- display->SetSlices( atoi( rangeMinSpinBox->text() ) ,atoi( rangeMaxSpinBox->text() ) );
- display->SetTheta(90.);
- }
- // Set PAIR of Sectors
- else if (selectSectorID == 3) {
- display->SetSlicesPair(atoi( pairSpinBox->text() ) );
- display->SetTheta(90.);
- }
- // Set PAIR RANGE of Sectors
- else if (selectSectorID == 2) {
- display->SetSlicesPair(atoi( pairRangeMinSpinBox->text() ) ,atoi( pairRangeMaxSpinBox->text() ) );
- display->SetTheta(90.);
- }
- // redisplay 3D
- redisplay();
-}
-
-//____________________________________________________________________________________________________
-void AliHLTGUI::setCluster(){
- // -- set used/unuse/all cluster
- AliHLTTPCDisplayMain* display = (AliHLTTPCDisplayMain*)fDisplay;
-
- // ALL Cluster = 0 | USED Cluster = 1 | UNUSED Cluster = 2
- display->SetSelectCluster( clusterPropButtonGroup->selectedId() );
-
- // redisplay 3D
- redisplay();
-}
-//____________________________________________________________________________________________________
-void AliHLTGUI::setTrack(){
- // -- set track properties
- AliHLTTPCDisplayMain* display = (AliHLTTPCDisplayMain*)fDisplay;
-
- display->SetCutHits(atoi (cutHitsSpinBox->text() ) );
- display->SetCutPt( (Float_t) atof (cutPtLineEdit->text() ) );
- display->SetCutPsi( (Float_t) atof (cutPsiLineEdit->text() ) );
- display->SetCutLambda( (Float_t) atof (cutLambdaLineEdit->text() ) );
- display->SetCutS( (Float_t) atof (cutSLineEdit->text() ) );
- display->SetIncidentPadrow( (Int_t) atoi (cutPadrowLineEdit->text() ) );
- redisplay();
-}
-
-//____________________________________________________________________________________________________
-void AliHLTGUI::setInvert(){
- // -- set invert 3D display
- AliHLTTPCDisplayMain* display = (AliHLTTPCDisplayMain*)fDisplay;
-
- display->SetInvert();
- redisplay();
-}
-
-//____________________________________________________________________________________________________
-void AliHLTGUI::setKeepView(){
- // -- keep angle view
- AliHLTTPCDisplayMain* display = (AliHLTTPCDisplayMain*)fDisplay;
-
- if (keepViewCheckBox->isChecked() ) display->SetKeepView(kTRUE);
- else display->SetKeepView(kFALSE);
-}
-
-
-void AliHLTGUI::setZeroSuppression(){
- // -- set Zero Suppresion
- AliHLTTPCDisplayMain* display = (AliHLTTPCDisplayMain*)fDisplay;
-
-#if ALIHLTTPCDISPLAY_VERSION >= 2
- if (rawZeroCheckBox->isChecked() ) display->SetZeroSuppression(kTRUE);
- else display->SetZeroSuppression(kFALSE);
-#else
- HLTError("function not available for AliHLTTPCDisplay version < 2");
-#endif
-
- redisplay();
-}
-
-
-//____________________________________________________________________________________________________
-void AliHLTGUI::setRawSlice(){
- // -- set slice for padrow / pad / timebin
- AliHLTTPCDisplayMain* display = (AliHLTTPCDisplayMain*)fDisplay;
-
- display->SetSlicePadRow( atoi (rawSectorSpinBox->text() ) );
-
- redisplay(kTRUE/*newRawSlice*/);
-}
-
-//____________________________________________________________________________________________________
-void AliHLTGUI::setPadRow(){
- // -- set padrow
- AliHLTTPCDisplayMain* display = (AliHLTTPCDisplayMain*)fDisplay;
-
- display->SetPadRow(atoi (padrowSpinBox->text() ) );
-
- padSpinBox->setMaxValue(display->GetNPads());
- padSlider->setMaxValue(display->GetNPads());
-
- setPad();
-}
-
-//____________________________________________________________________________________________________
-void AliHLTGUI::setPad(){
- // -- set pad, or pad histograms
- AliHLTTPCDisplayMain* display = (AliHLTTPCDisplayMain*)fDisplay;
-
- display->SetPad(atoi (padSpinBox->text() ) );
-
- redisplay();
-}
-
-//____________________________________________________________________________________________________
-void AliHLTGUI::setTimeBin(){
- // -- set timebins
- AliHLTTPCDisplayMain* display = (AliHLTTPCDisplayMain*)fDisplay;
-
- Int_t selectTimebinID = frontDisplayButtonGroup->selectedId();
-
-#if ALIHLTTPCDISPLAY_VERSION >= 2
- // Set ALL TimeBins
- if ( selectTimebinID == 3) display->SetTimeBinMinMax(0,display->GetNTimeBins()-1 );
-
- // Set ONE TimeBin
- else if ( selectTimebinID == 2) display->SetTimeBinMinMax( atoi( oneTimeBinSpinBox->text() ), atoi( oneTimeBinSpinBox->text() ) );
-
- // Set RANGE of TimeBins
- else if ( selectTimebinID == 1) {
- Int_t min = atoi( minTimeBinSpinBox->text() );
- Int_t max = atoi( maxTimeBinSpinBox->text() );
-
- if ( max < min) {
- max = min;
- maxTimeBinSpinBox->setValue(max);
- }
-
- display->SetTimeBinMinMax( min , max );
-
- }
-#else
- HLTError("function not available for AliHLTTPCDisplay version < 2");
-#endif
-
- redisplay();
-}
-
-//____________________________________________________________________________________________________
-void AliHLTGUI::selectTimeBinData(){
- // -- select max,sum,average of Data
- AliHLTTPCDisplayMain* display = (AliHLTTPCDisplayMain*)fDisplay;
-
- Int_t selectFrontDataID = frontDataButtonGroup->selectedId();
-
-#if ALIHLTTPCDISPLAY_VERSION >= 2
- // Set use sum in data
- if (selectFrontDataID == 0) display->SetFrontDataSwitch(0);
-
- // Set use average in data
- else if (selectFrontDataID == 1) display->SetFrontDataSwitch(1);
-
- // Set use maximum in data
- else if (selectFrontDataID == 2) display->SetFrontDataSwitch(2);
-#else
- HLTError("function not available for AliHLTTPCDisplay version < 2");
-#endif
-
- redisplay();
-}
-
-//____________________________________________________________________________________________________
-void AliHLTGUI::setSplitPadRow(){
- // -- set split PadRow Canvas
- AliHLTTPCDisplayMain* display = (AliHLTTPCDisplayMain*)fDisplay;
-
- if (padrowSplitCheckBox->isChecked() ) display->SetSplitPadRow(kTRUE);
- else display->SetSplitPadRow(kFALSE);
-
- redisplay();
-}
-//____________________________________________________________________________________________________
-void AliHLTGUI::setSplitFront(){
- // -- set split Front Canvas
- AliHLTTPCDisplayMain* display = (AliHLTTPCDisplayMain*)fDisplay;
-
-#if ALIHLTTPCDISPLAY_VERSION >= 2
- if (frontSplitCheckBox->isChecked() ) display->SetSplitFront(kTRUE);
- else display->SetSplitFront(kFALSE);
-#else
- HLTError("function not available for AliHLTTPCDisplay version < 2");
-#endif
-
- redisplay();
-}
-
-/* ----- OLD DELETE
-//____________________________________________________________________________________________________
-void AliHLTGUI::setAllTimeBins(){
- // -- set show all Timebins in front view
- AliHLTTPCDisplayMain* display = (AliHLTTPCDisplayMain*)fDisplay;
-
- if (allTimebinCheckBox->isChecked() ) display->SetAllTimebins(kTRUE);
- else display->SetAllTimebins(kFALSE);
-
- redisplay();
-}
------ */
-
-//____________________________________________________________________________________________________
-void AliHLTGUI::setGUIPad(Int_t pad){
- // -- set GUI pad value
- padSpinBox->setValue(pad);
-}
-
-//____________________________________________________________________________________________________
-void AliHLTGUI::set3D(){
- // -- set 3D Display
- AliHLTTPCDisplayMain* display = (AliHLTTPCDisplayMain*)fDisplay;
-
- if (padrowCheckBox->isChecked()) setPadRow();
-
- display->SetSwitches(tracksCheckBox->isChecked(), clusterCheckBox->isChecked(), padrowCheckBox->isChecked(), geometryCheckBox->isChecked() );
- redisplay();
-}
-
-//____________________________________________________________________________________________________
-void AliHLTGUI::set3DRaw(){
- // -- set 3D Display Raw Properties
- AliHLTTPCDisplayMain* display = (AliHLTTPCDisplayMain*)fDisplay;
-
- Int_t selectRawID = threeDRawButtonGroup->selectedId();
-
-#if ALIHLTTPCDISPLAY_VERSION >= 2
- // Set ALL PadRows
- if (selectRawID == 0) display->Set3DRawSwitch(0);
-
- // Set ONE PadRow
- else if (selectRawID == 1) display->Set3DRawSwitch(1);
-#else
- HLTError("function not available for AliHLTTPCDisplay version < 2");
-#endif
-
- // redisplay 3D
- redisplay();
-}
-
-//____________________________________________________________________________________________________
-void AliHLTGUI::setSelectTrack(){
- // -- turn on /off of single track
- AliHLTTPCDisplayMain* display = (AliHLTTPCDisplayMain*)fDisplay;
-
- display->SetSelectTrackSwitch( selectTrackCheckBox->isChecked() );
-
- if (! selectTrackCheckBox->isChecked() ) {
- display->SetSelectTrack(0);
- redisplay();
- }
- else selectTrackSector();
-}
-
-//____________________________________________________________________________________________________
-void AliHLTGUI::selectTrackSector(){
- // -- select slice for single track
- AliHLTTPCDisplayMain* display = (AliHLTTPCDisplayMain*)fDisplay;
-
- Int_t slice = atoi( selectTrackSectorSpinBox->text());
-
- if (display->GetTracksPerSlice(slice) == 0) selectTrackSpinBox->setMaxValue( 0 );
- else selectTrackSpinBox->setMaxValue( display->GetTracksPerSlice(slice) - 1 );
-
- selectTrackSpinBox->setValue(0);
-
- display->SetSelectTrackSlice(slice);
-
- selectTrack();
-}
-
-//____________________________________________________________________________________________________
-void AliHLTGUI::selectTrack(){
- // -- select single track in slice
- AliHLTTPCDisplayMain* display = (AliHLTTPCDisplayMain*)fDisplay;
-
- display->SetSelectTrack( atoi( selectTrackSpinBox->text() ) );
- redisplay();
-}
-
-
-//____________________________________________________________________________________________________
-void AliHLTGUI::displayTrackParam(){
- // -- display Track Parameters
- AliHLTTPCDisplayMain* display = (AliHLTTPCDisplayMain*)fDisplay;
-
- Char_t nHits[256] = "";
- Char_t charge[256] = "";
- Char_t kappa[256] = "";
- Char_t radius[256] = "";
- Char_t slice[256] = "";
- Char_t phi0[256] = "";
- Char_t psi[256] = "";
- Char_t lambda[256]= "";
- Char_t pt[256] = "";
- Char_t id[256] = "";
-
- if ( display->GetSelectTrackSwitch()
- && display->ExistsTrackData()
- && display->GetDisplaySlice( atoi(selectTrackSectorSpinBox->text()) )
- && display->GetTracksPerSlice( atoi(selectTrackSectorSpinBox->text()) ) > 0 ){
- sprintf(kappa,"%f",display->fTrackParam.kappa);
- sprintf(nHits,"%d",display->fTrackParam.nHits);
- sprintf(charge,"%d",display->fTrackParam.charge);
- sprintf(radius,"%f",display->fTrackParam.radius);
- sprintf(slice,"%d",display->fTrackParam.slice);
- sprintf(phi0,"%f",display->fTrackParam.phi0);
- sprintf(psi,"%f",display->fTrackParam.psi);
- sprintf(lambda,"%f",display->fTrackParam.lambda);
- sprintf(pt,"%f",display->fTrackParam.pt);
- sprintf(id,"%d",display->fTrackParam.id);
- }
- else {
- sprintf(kappa,"%f",0.);
- sprintf(nHits,"%d",1);
- sprintf(charge,"%d",0);
- sprintf(radius,"%f",0.);
- sprintf(slice,"%d",0);
- sprintf(phi0,"%f",0.);
- sprintf(psi,"%f",0.);
- sprintf(lambda,"%f",0.);
- sprintf(pt,"%f",0.);
- sprintf(id,"%d",0);
- }
-
- trackParamSliceTextLabel->setText(slice);
- trackParamIDTextLabel->setText(id);
- trackParamKappaTextLabel->setText(kappa);
- trackParamPtTextLabel->setText(pt);
- trackParamNHitsTextLabel->setText(nHits);
- trackParamChargeTextLabel->setText(charge);
- trackParamRadiusTextLabel->setText(radius);
- trackParamPhi0TextLabel->setText(phi0);
- trackParamPsiTextLabel->setText(psi);
- trackParamLambdaTextLabel->setText(lambda);
-}
+++ /dev/null
-
-#ifndef _AliHLTGUI_H_
-#define _AliHLTGUI_H_
-
-/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- * See cxx source for full Copyright notice */
-
-/** @file AliHLTGUI.h
- @author Jochen Thaeder
- @date
- @brief Qt class for ALICE HLT online Display
-*/
-
-#include "Rtypes.h"
-
-#include "AliHLTLogging.h"
-#include "AliHLTGUIMainForm.h"
-#include <vector>
-#include <qtimer.h>
-
-
-
-/**
- * @class AliHLTGUI
- * The class handels the graphical user interface for the ALICE HLT online
- * display. The input made in the GUI is set in the main class @ref AliHLTTPCDisplayMain.
- * In order to seperate the Qt code from the ROOT code, all functionality is
- * implemented in the class @ref AliHLTTPCDisplayMain. This class fuctions just as
- * front-end for the GUI.<br>
- * Several options can alredeay defined using the commandline:
- * -n-time-bins <mode> Sets number of TimeBins for the TPC, can bei either a digit, 'sim' or 'tpc'.
- * -adc-threshold <mode> Sets the ADC Threshold for the Zero-Suppression of raw data, should be ADC counts.
- * -occupancy-limit <mode> Sets the Occupancy limits for pads, wherby <mode> is [0,1].
- * -b-field <mode> Sets the B-field.
- * -tcp-source <host:port> ... Sets Host and Ports to a TCP port of a @ref TCPDumpSubscriber. Multiple Connections can be given.
- * -connect Connects already to given TCP-Sources.
- * --help Shows the Help Menu.
- * --version Prints version of AliHLTGUI.
- * @ingroup alihlt_display
- */
-
-class AliHLTGUI : public AliHLTGUIMainForm , public AliHLTLogging {
- Q_OBJECT
-
- public:
- /** standard constructor */
- AliHLTGUI();
-
- /**
- * Constructor
- * @param argc Number of commandline arguments
- * @param argv Array of commandline arguments
- */
- AliHLTGUI( Int_t argc, Char_t **argv );
-
- /** not a valid copy constructor, defined according to effective C++ style */
- AliHLTGUI(const AliHLTGUI&);
- /** not a valid assignment op, but defined according to effective C++ style */
- AliHLTGUI& operator=(const AliHLTGUI&);
-
- /** standard destructor */
- virtual ~AliHLTGUI();
-
- public slots:
-
- /** Qt slots for the GUI objects<br> */
- /** ---------------------------------*/
-
- /** Qt slot for connect button */
- void connectDisplay();
- /** Qt slot for adding host to hostlist */
- void addHost();
- /** Qt slot for removing host from hostlist */
- void removeHost();
- /** Qt slot for next event button */
- void nextEvent();
- /** Qt slot for event loop button */
- void eventLoop();
- /** Qt slot for update time of evemt loop */
- void updateEventLoop();
- /** Qt slot for redisplay button */
- void redisplayEvent(){ redisplay(kFALSE); }
-
-
- /** Qt slots for the GUI objects and setter for @ref AliHLTTPCDisplayMain */
- /** --------------------------------------------------------------------- */
-
- /**
- * Qt slot for objects, responsible for the selection<br>
- * of the slices which should be displayed in the 3D view.<br>
- * Selection is than set to @ref ALiHLTTPCDisplayMain.
- */
- void setSector();
-
- /**
- * Qt slot for zero suppression.<br>
- * Selection is than set to @ref ALiHLTTPCDisplayMain.<br>
- * @ref redisplay() is called afterwards
- */
- void setZeroSuppression();
-
- /**
- * Qt slot for selection of new slice for raw data.<br>
- * Selection is than set to @ref ALiHLTTPCDisplayMain.<br>
- * @ref redisplay(kTRUE) is called afterwards, on order to read
- * the data for the new slice.
- */
- void setRawSlice();
-
- /**
- * Qt slot for selection of padrow for raw data.<br>
- * Selection is than set to @ref ALiHLTTPCDisplayMain.<br>
- * @ref redisplay() is called afterwards
- */
- void setPadRow();
-
- /**
- * Qt slot for selection of pad for raw data.<br>
- * Selection is than set to @ref ALiHLTTPCDisplayMain.<br>
- * @ref redisplay() is called afterwards
- */
- void setPad();
-
- /**
- * Qt slot for selection of timebins (all timebins,
- * one timebin, range of timebin) for raw data.<br>
- * Selection is than set to @ref ALiHLTTPCDisplayMain.<br>
- * @ref redisplay() is called afterwards
- */
- void setTimeBin();
-
- /**
- * Qt slot for selection, how timebins should be displayed (sum, average, maximum).<br>
- * Selection is than set to @ref ALiHLTTPCDisplayMain.<br>
- * @ref redisplay() is called afterwards
- */
- void selectTimeBinData();
-
- /**
- * Qt slot for splitting padrowCanvas and show padrow
- * and pad histograms in the same canvas.<br>
- * Selection is than set to @ref ALiHLTTPCDisplayMain.<br>
- * @ref redisplay() is called afterwards
- */
- void setSplitPadRow();
-
- /**
- * Qt slot for splitting frontCanvas and show front
- * and pad histograms in the same canvas.<br>
- * Selection is than set to @ref ALiHLTTPCDisplayMain.<br>
- * @ref redisplay() is called afterwards
- */
- void setSplitFront();
-
- /**
- * Qt slot for selection of what to display in 3D: raw data, cluster data, tracks data, geometry.<br>
- * Selection is than set to @ref ALiHLTTPCDisplayMain.<br>
- * @ref redisplay() is called afterwards
- */
- void set3D();
-
- /**
- * Qt slot for selection if only one padrow or all padrow of selected
- * slice for raw data should be displayed.<br>
- * Selection is than set to @ref ALiHLTTPCDisplayMain.<br>
- * @ref redisplay() is called afterwards
- */
- void set3DRaw();
-
- /**
- * Qt slot for selection of cuts for tracks.<br>
- * Selection is than set to @ref ALiHLTTPCDisplayMain.<br>
- * @ref redisplay() is called afterwards
- */
- void setTrack();
-
- /**
- * Qt slot for selection of what clusters shold be displayed:
- * All clusters, used and unused clusters in terms of associated to found tracks.<br>
- * Selection is than set to @ref ALiHLTTPCDisplayMain.<br>
- * @ref redisplay() is called afterwards
- */
- void setCluster();
-
- /**
- * Qt slot for inversion of the background in 3D canvas.<br>
- * Selection is than set to @ref ALiHLTTPCDisplayMain.<br>
- * @ref redisplay() is called afterwards
- */
- void setInvert();
-
- /**
- * Qt slot for selection of single tracks or all tracks.
- * Selection is than set to @ref ALiHLTTPCDisplayMain.<br>
- * @ref redisplay() is called afterwards
- */
- void setSelectTrack();
-
- /**
- * Qt slot for selection of slice for track and residual objectes.<br>
- * Selection is than set to @ref ALiHLTTPCDisplayMain.<br>
- * @ref redisplay() is called afterwards
- */
- void selectTrackSector();
-
- /**
- * Qt slot for selection of single track.<br>
- * Selection is than set to @ref ALiHLTTPCDisplayMain.<br>
- * @ref redisplay() is called afterwards
- */
- void selectTrack();
-
- /**
- * Qt slot for selection, if angles should be kept when redisplaying
- * Selection is than set to @ref ALiHLTTPCDisplayMain.<br>
- * @ref redisplay() is called afterwards
- */
- void setKeepView();
-
- /** Functions<br> */
- /** --------------*/
-
- /** Shows Track parameter of current selected single Track */
- void displayTrackParam();
-
- /**
- * Redisplays event without reading new event,
- * after change of parameters in the GUI.
- * @param newRawSlice In the case of changed slice for raw data set
- * to kTRUE, than data for new raw slice is read.
- * Standard is kFALSE
- */
- void redisplay(Bool_t newRawSlice=kFALSE); // redisplay function
-
- /** Qt slot for save histogram button, saves all canvases. */
- void saveHistograms();
-
- /**
- * Enables connect-objects according to connection Status
- * @param connected Connection status of the GUI to
- * the TCPDumpSubscriber.<br>
- * Either kTRUE or kFALSE.
- */
- void enableDisplay(Bool_t connected);
-
- /** Enables data objects according to data availibility */
- void enableDataObjects();
-
- /** Sets pad value in GUI out of @ref AliHLTTPCDisplayMain */
- void setGUIPad(Int_t pad);
-
- /** Callback function fot setGUIPad */
- static void callback_setGUIPad(void* pt2Object, Int_t pad){
- AliHLTGUI* myself = (AliHLTGUI*) pt2Object;
- myself->setGUIPad(pad);
- }
-
- protected:
- /** Pointer to AliHLTTPCDisplayMain */
- void* fDisplay;
-
- /** Qt vector for hostnames */
- vector<QString> fHostnames;
- /** Qt vector for ports */
- vector<QString> fPorts;
-
- /** QtWidget for ROOT padrow canvas */
- TQtWidget *padrowWidget;
- /** QtWidget for ROOT pad canvas */
- TQtWidget *padWidget;
- /** QtWidget for ROOT residuals canvas */
- TQtWidget *residualsWidget;
- /** QtWidget for ROOT charge canvas */
- TQtWidget *chargeWidget;
- /** QtWidget for ROOT threeD canvas */
- TQtWidget *threeDWidget;
- /** QtWidget for ROOT front canvas */
- TQtWidget *frontWidget;
- /** QtWidget for ROOT hist_s canvas */
- TQtWidget *hits_sWidget;
- /** QtWidget for ROOT q_track canvas */
- TQtWidget *q_trackWidget;
- /** QtWidget for ROOT q_s canvas */
- TQtWidget *q_sWidget;
- /** QtWidget for ROOT padrow_pad canvas */
- TQtWidget *padrow_padWidget;
-
- /** Qt Timer for event loop */
- QTimer *fEventLoop;
-};
-
-#endif /* _AliHLTGUI_H_ */
+++ /dev/null
-TEMPLATE = app
-LANGUAGE = C++
-
-CONFIG += qt warn_on release thread debug
-
-HEADERS += AliHLTGUI.h
-
-SOURCES += main.cxx \
- AliHLTGUI.cxx
-
-FORMS = AliHLTGUIMainForm.ui
-
-IMAGES = AliceLogo.gif \
- KIPLogo.gif
-
-include (flags)
-
-#/************************************************************************
-#**
-#** This file is property of and copyright by the Computer Science/Computer
-#** Engineering Group, Kirchhoff Institute for Physics, Ruprecht-Karls-
-#** University, Heidelberg, Germany, 2005
-#** This file has been written by Jochen Thaeder,
-#** thaeder@kip.uni-heidelberg.de
-#**
-#**
-#** See the file license.txt for details regarding usage, modification,
-#** distribution and warranty.
-#** Important: This file is provided without any warranty, including
-#** fitness for any particular purpose.
-#**
-#**
-#** Newer versions of this file's package will be made available from
-#** http://www.kip.uni-heidelberg.de/ti/HLT/
-#** or the corresponding page of the Heidelberg Alice HLT group.
-#**
-#*************************************************************************/
-
-TARGET = AliHLTGUI
-
-
-
-
-
-
-
-
-
-includeFile = $(QTROOTSYSDIR)/include/rootcint.pri
-exists ($$includeFile) {
- include ($$includeFile)
-}
-!exists ($$includeFile) {
- includeFile = $$ROOTINCDIR/rootcint.pri
- exists ($$includeFile) {
- include ($$includeFile)
- }
- !exists ($$includeFile) {
- message (" ")
- message ("WARNING: The $$inlcudeFile was not found !!!")
- message ("Please update your Qt layer version from http://root.bnl.gov ")
- message (" ")
- }
-}
-
-# Loading HLT libraries
-LIBS += $$ALIHLT_LDFLAGS $$ALIHLT_LIBS
-
-# Loading ALICE TPC libraries
-LIBS += $$ALIROOT_LDFLAGS $$ALIROOT_LIBS
-
-# Loading ROOT libraries
-LIBS += -L$$ROOTLIBDIR
-
-unix {
-#
-# generate the link to the proper version of the ROOT resource file
-#
- rootrc.target = .rootrc
- ROOTRESOURCEFILE=rootrcqtgui
- !exists ($$ROOTLIBDIR/libQtGui.$$QMAKE_EXTENSION_SHLIB) {
- message ("No ROOT Qt Extension was found. Use Qt-layer instead")
- ROOTRESOURCEFILE = rootrcqt
- }
- rootrc.commands = @rm -rf .rootrc; ln -s $$ROOTRESOURCEFILE $$rootrc.target
-
- QMAKE_EXTRA_UNIX_TARGETS += rootrc
- PRE_TARGETDEPS += $$rootrc.target
- QMAKE_CLEAN += $$rootrc.target
-}
-
-unix {
- ROOTCINT_DIR = .rootcint
- UI_DIR = .ui
- MOC_DIR = .moc
- OBJECTS_DIR = .obj
-}
+++ /dev/null
-<!DOCTYPE UI><UI version="3.3" stdsetdef="1">
-<class>AliHLTGUIMainForm</class>
-<author>Jochen Thaeder at KIP University of Heidelberg</author>
-<widget class="QMainWindow">
- <property name="name">
- <cstring>AliHLTGUIMainForm</cstring>
- </property>
- <property name="geometry">
- <rect>
- <x>0</x>
- <y>0</y>
- <width>1072</width>
- <height>945</height>
- </rect>
- </property>
- <property name="sizePolicy">
- <sizepolicy>
- <hsizetype>5</hsizetype>
- <vsizetype>5</vsizetype>
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>363</width>
- <height>418</height>
- </size>
- </property>
- <property name="baseSize">
- <size>
- <width>0</width>
- <height>0</height>
- </size>
- </property>
- <property name="paletteBackgroundColor">
- <color>
- <red>255</red>
- <green>255</green>
- <blue>255</blue>
- </color>
- </property>
- <property name="caption">
- <string>ALICE - HLT TPC Online Display </string>
- </property>
- <property name="icon">
- <pixmap>AliceLogo.gif</pixmap>
- </property>
- <property name="iconText">
- <string></string>
- </property>
- <property name="opaqueMoving">
- <bool>true</bool>
- </property>
- <grid>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <property name="margin">
- <number>0</number>
- </property>
- <property name="spacing">
- <number>0</number>
- </property>
- <widget class="QLayoutWidget" row="0" column="0">
- <property name="name">
- <cstring>layout34</cstring>
- </property>
- <grid>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <property name="margin">
- <number>0</number>
- </property>
- <property name="spacing">
- <number>0</number>
- </property>
- <widget class="QLayoutWidget" row="0" column="1">
- <property name="name">
- <cstring>layout33</cstring>
- </property>
- <grid>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <property name="margin">
- <number>0</number>
- </property>
- <property name="spacing">
- <number>0</number>
- </property>
- <widget class="QToolBox" row="1" column="0">
- <property name="name">
- <cstring>mainToolBox</cstring>
- </property>
- <property name="sizePolicy">
- <sizepolicy>
- <hsizetype>0</hsizetype>
- <vsizetype>5</vsizetype>
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>270</width>
- <height>0</height>
- </size>
- </property>
- <property name="maximumSize">
- <size>
- <width>270</width>
- <height>32767</height>
- </size>
- </property>
- <property name="palette">
- <palette>
- <active>
- <color>
- <red>0</red>
- <green>0</green>
- <blue>0</blue>
- </color>
- <color>
- <red>230</red>
- <green>240</green>
- <blue>249</blue>
- </color>
- <color>
- <red>255</red>
- <green>255</green>
- <blue>255</blue>
- </color>
- <color>
- <red>242</red>
- <green>247</green>
- <blue>252</blue>
- </color>
- <color>
- <red>115</red>
- <green>120</green>
- <blue>124</blue>
- </color>
- <color>
- <red>154</red>
- <green>160</green>
- <blue>166</blue>
- </color>
- <color>
- <red>0</red>
- <green>0</green>
- <blue>0</blue>
- </color>
- <color>
- <red>255</red>
- <green>255</green>
- <blue>255</blue>
- </color>
- <color>
- <red>0</red>
- <green>0</green>
- <blue>0</blue>
- </color>
- <color>
- <red>255</red>
- <green>255</green>
- <blue>255</blue>
- </color>
- <color>
- <red>230</red>
- <green>232</green>
- <blue>231</blue>
- </color>
- <color>
- <red>0</red>
- <green>0</green>
- <blue>0</blue>
- </color>
- <color>
- <red>0</red>
- <green>0</green>
- <blue>128</blue>
- </color>
- <color>
- <red>255</red>
- <green>255</green>
- <blue>255</blue>
- </color>
- <color>
- <red>0</red>
- <green>0</green>
- <blue>0</blue>
- </color>
- <color>
- <red>0</red>
- <green>0</green>
- <blue>0</blue>
- </color>
- </active>
- <disabled>
- <color>
- <red>128</red>
- <green>128</green>
- <blue>128</blue>
- </color>
- <color>
- <red>230</red>
- <green>240</green>
- <blue>249</blue>
- </color>
- <color>
- <red>255</red>
- <green>255</green>
- <blue>255</blue>
- </color>
- <color>
- <red>255</red>
- <green>255</green>
- <blue>255</blue>
- </color>
- <color>
- <red>115</red>
- <green>120</green>
- <blue>124</blue>
- </color>
- <color>
- <red>154</red>
- <green>160</green>
- <blue>166</blue>
- </color>
- <color>
- <red>128</red>
- <green>128</green>
- <blue>128</blue>
- </color>
- <color>
- <red>255</red>
- <green>255</green>
- <blue>255</blue>
- </color>
- <color>
- <red>128</red>
- <green>128</green>
- <blue>128</blue>
- </color>
- <color>
- <red>255</red>
- <green>255</green>
- <blue>255</blue>
- </color>
- <color>
- <red>230</red>
- <green>232</green>
- <blue>231</blue>
- </color>
- <color>
- <red>0</red>
- <green>0</green>
- <blue>0</blue>
- </color>
- <color>
- <red>0</red>
- <green>0</green>
- <blue>128</blue>
- </color>
- <color>
- <red>255</red>
- <green>255</green>
- <blue>255</blue>
- </color>
- <color>
- <red>83</red>
- <green>83</green>
- <blue>120</blue>
- </color>
- <color>
- <red>0</red>
- <green>64</green>
- <blue>0</blue>
- </color>
- </disabled>
- <inactive>
- <color>
- <red>0</red>
- <green>0</green>
- <blue>0</blue>
- </color>
- <color>
- <red>230</red>
- <green>240</green>
- <blue>249</blue>
- </color>
- <color>
- <red>255</red>
- <green>255</green>
- <blue>255</blue>
- </color>
- <color>
- <red>255</red>
- <green>255</green>
- <blue>255</blue>
- </color>
- <color>
- <red>115</red>
- <green>120</green>
- <blue>124</blue>
- </color>
- <color>
- <red>154</red>
- <green>160</green>
- <blue>166</blue>
- </color>
- <color>
- <red>0</red>
- <green>0</green>
- <blue>0</blue>
- </color>
- <color>
- <red>255</red>
- <green>255</green>
- <blue>255</blue>
- </color>
- <color>
- <red>0</red>
- <green>0</green>
- <blue>0</blue>
- </color>
- <color>
- <red>255</red>
- <green>255</green>
- <blue>255</blue>
- </color>
- <color>
- <red>230</red>
- <green>232</green>
- <blue>231</blue>
- </color>
- <color>
- <red>0</red>
- <green>0</green>
- <blue>0</blue>
- </color>
- <color>
- <red>0</red>
- <green>0</green>
- <blue>128</blue>
- </color>
- <color>
- <red>255</red>
- <green>255</green>
- <blue>255</blue>
- </color>
- <color>
- <red>83</red>
- <green>83</green>
- <blue>120</blue>
- </color>
- <color>
- <red>0</red>
- <green>64</green>
- <blue>0</blue>
- </color>
- </inactive>
- </palette>
- </property>
- <property name="backgroundOrigin">
- <enum>WidgetOrigin</enum>
- </property>
- <property name="font">
- <font>
- <family>FreeSans</family>
- </font>
- </property>
- <property name="frameShadow">
- <enum>Plain</enum>
- </property>
- <property name="currentIndex">
- <number>4</number>
- </property>
- <widget class="QWidget">
- <property name="name">
- <cstring>Connect</cstring>
- </property>
- <property name="backgroundMode">
- <enum>PaletteBackground</enum>
- </property>
- <attribute name="label">
- <string>Connect</string>
- </attribute>
- <grid>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <property name="margin">
- <number>1</number>
- </property>
- <property name="spacing">
- <number>1</number>
- </property>
- <widget class="QGroupBox" row="0" column="0">
- <property name="name">
- <cstring>connectGroupBox</cstring>
- </property>
- <property name="sizePolicy">
- <sizepolicy>
- <hsizetype>5</hsizetype>
- <vsizetype>0</vsizetype>
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="title">
- <string>Connect</string>
- </property>
- <grid>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <property name="margin">
- <number>5</number>
- </property>
- <property name="spacing">
- <number>5</number>
- </property>
- <widget class="QLabel" row="1" column="0">
- <property name="name">
- <cstring>connectTextLabel</cstring>
- </property>
- <property name="sizePolicy">
- <sizepolicy>
- <hsizetype>7</hsizetype>
- <vsizetype>3</vsizetype>
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>0</width>
- <height>20</height>
- </size>
- </property>
- <property name="paletteForegroundColor">
- <color>
- <red>255</red>
- <green>0</green>
- <blue>0</blue>
- </color>
- </property>
- <property name="paletteBackgroundColor">
- <color>
- <red>0</red>
- <green>0</green>
- <blue>0</blue>
- </color>
- </property>
- <property name="font">
- <font>
- <bold>1</bold>
- </font>
- </property>
- <property name="text">
- <string>DISCONNECTED</string>
- </property>
- <property name="alignment">
- <set>AlignCenter</set>
- </property>
- </widget>
- <widget class="QPushButton" row="0" column="0">
- <property name="name">
- <cstring>connectPushButton</cstring>
- </property>
- <property name="sizePolicy">
- <sizepolicy>
- <hsizetype>7</hsizetype>
- <vsizetype>0</vsizetype>
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="text">
- <string>Connect</string>
- </property>
- </widget>
- </grid>
- </widget>
- <widget class="QGroupBox" row="4" column="0">
- <property name="name">
- <cstring>addGroupBox</cstring>
- </property>
- <property name="title">
- <string>Add Host</string>
- </property>
- <grid>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <property name="margin">
- <number>5</number>
- </property>
- <property name="spacing">
- <number>5</number>
- </property>
- <widget class="QLineEdit" row="1" column="0" rowspan="1" colspan="2">
- <property name="name">
- <cstring>hostnameLineEdit</cstring>
- </property>
- </widget>
- <widget class="QPushButton" row="3" column="0" rowspan="1" colspan="2">
- <property name="name">
- <cstring>addPushButton</cstring>
- </property>
- <property name="text">
- <string>Add Host</string>
- </property>
- <property name="flat">
- <bool>false</bool>
- </property>
- </widget>
- <widget class="QSpinBox" row="2" column="1">
- <property name="name">
- <cstring>portSpinBox</cstring>
- </property>
- <property name="buttonSymbols">
- <enum>PlusMinus</enum>
- </property>
- <property name="maxValue">
- <number>99999</number>
- </property>
- <property name="value">
- <number>42000</number>
- </property>
- </widget>
- <widget class="QLabel" row="0" column="0" rowspan="1" colspan="2">
- <property name="name">
- <cstring>textLabel3_2</cstring>
- </property>
- <property name="text">
- <string>Hostname</string>
- </property>
- </widget>
- <widget class="QLabel" row="2" column="0">
- <property name="name">
- <cstring>textLabel4</cstring>
- </property>
- <property name="text">
- <string>Port</string>
- </property>
- </widget>
- </grid>
- </widget>
- <widget class="QLabel" row="1" column="0">
- <property name="name">
- <cstring>HostListTextLabel</cstring>
- </property>
- <property name="text">
- <string>Host List</string>
- </property>
- </widget>
- <widget class="QListView" row="2" column="0">
- <column>
- <property name="text">
- <string>Hostname</string>
- </property>
- <property name="clickable">
- <bool>true</bool>
- </property>
- <property name="resizable">
- <bool>true</bool>
- </property>
- </column>
- <column>
- <property name="text">
- <string>Port</string>
- </property>
- <property name="clickable">
- <bool>true</bool>
- </property>
- <property name="resizable">
- <bool>true</bool>
- </property>
- </column>
- <property name="name">
- <cstring>hostListView</cstring>
- </property>
- </widget>
- <widget class="QPushButton" row="3" column="0">
- <property name="name">
- <cstring>removePushButton</cstring>
- </property>
- <property name="sizePolicy">
- <sizepolicy>
- <hsizetype>7</hsizetype>
- <vsizetype>0</vsizetype>
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="text">
- <string>Remove Host</string>
- </property>
- </widget>
- </grid>
- </widget>
- <widget class="QWidget">
- <property name="name">
- <cstring>page</cstring>
- </property>
- <property name="backgroundMode">
- <enum>PaletteBackground</enum>
- </property>
- <attribute name="label">
- <string>Display</string>
- </attribute>
- <grid>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <property name="margin">
- <number>1</number>
- </property>
- <property name="spacing">
- <number>1</number>
- </property>
- <widget class="QButtonGroup" row="0" column="0">
- <property name="name">
- <cstring>buttonGroup3</cstring>
- </property>
- <property name="title">
- <string>buttonGroup3</string>
- </property>
- </widget>
- <widget class="QLayoutWidget" row="0" column="0">
- <property name="name">
- <cstring>layout31</cstring>
- </property>
- <grid>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <property name="margin">
- <number>0</number>
- </property>
- <property name="spacing">
- <number>0</number>
- </property>
- <widget class="QButtonGroup" row="1" column="0">
- <property name="name">
- <cstring>sectorButtonGroup</cstring>
- </property>
- <property name="enabled">
- <bool>false</bool>
- </property>
- <property name="sizePolicy">
- <sizepolicy>
- <hsizetype>5</hsizetype>
- <vsizetype>0</vsizetype>
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="title">
- <string>Sectors [0 , 17] to display</string>
- </property>
- <grid>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <property name="margin">
- <number>5</number>
- </property>
- <property name="spacing">
- <number>5</number>
- </property>
- <widget class="QLayoutWidget" row="0" column="0">
- <property name="name">
- <cstring>layout14</cstring>
- </property>
- <grid>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <widget class="QSpinBox" row="2" column="3">
- <property name="name">
- <cstring>rangeMaxSpinBox</cstring>
- </property>
- <property name="enabled">
- <bool>false</bool>
- </property>
- <property name="sizePolicy">
- <sizepolicy>
- <hsizetype>0</hsizetype>
- <vsizetype>0</vsizetype>
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="buttonSymbols">
- <enum>PlusMinus</enum>
- </property>
- <property name="maxValue">
- <number>17</number>
- </property>
- </widget>
- <widget class="QSpinBox" row="4" column="1">
- <property name="name">
- <cstring>pairRangeMinSpinBox</cstring>
- </property>
- <property name="enabled">
- <bool>false</bool>
- </property>
- <property name="sizePolicy">
- <sizepolicy>
- <hsizetype>0</hsizetype>
- <vsizetype>0</vsizetype>
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="buttonSymbols">
- <enum>PlusMinus</enum>
- </property>
- <property name="maxValue">
- <number>17</number>
- </property>
- </widget>
- <widget class="QSpinBox" row="1" column="1">
- <property name="name">
- <cstring>oneSpinBox</cstring>
- </property>
- <property name="enabled">
- <bool>false</bool>
- </property>
- <property name="sizePolicy">
- <sizepolicy>
- <hsizetype>0</hsizetype>
- <vsizetype>0</vsizetype>
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="buttonSymbols">
- <enum>PlusMinus</enum>
- </property>
- <property name="maxValue">
- <number>17</number>
- </property>
- </widget>
- <widget class="QRadioButton" row="0" column="0">
- <property name="name">
- <cstring>allRadioButton</cstring>
- </property>
- <property name="sizePolicy">
- <sizepolicy>
- <hsizetype>0</hsizetype>
- <vsizetype>0</vsizetype>
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="text">
- <string>All</string>
- </property>
- <property name="checked">
- <bool>true</bool>
- </property>
- <property name="buttonGroupId">
- <number>-1</number>
- </property>
- </widget>
- <widget class="QRadioButton" row="2" column="0">
- <property name="name">
- <cstring>rangeRadioButton</cstring>
- </property>
- <property name="sizePolicy">
- <sizepolicy>
- <hsizetype>0</hsizetype>
- <vsizetype>0</vsizetype>
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="text">
- <string>Sector</string>
- </property>
- <property name="buttonGroupId">
- <number>-1</number>
- </property>
- </widget>
- <widget class="QLabel" row="4" column="2">
- <property name="name">
- <cstring>textLabel1_2</cstring>
- </property>
- <property name="enabled">
- <bool>false</bool>
- </property>
- <property name="sizePolicy">
- <sizepolicy>
- <hsizetype>0</hsizetype>
- <vsizetype>5</vsizetype>
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="text">
- <string> to </string>
- </property>
- </widget>
- <widget class="QSpinBox" row="2" column="1">
- <property name="name">
- <cstring>rangeMinSpinBox</cstring>
- </property>
- <property name="enabled">
- <bool>false</bool>
- </property>
- <property name="sizePolicy">
- <sizepolicy>
- <hsizetype>0</hsizetype>
- <vsizetype>0</vsizetype>
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="buttonSymbols">
- <enum>PlusMinus</enum>
- </property>
- <property name="maxValue">
- <number>17</number>
- </property>
- </widget>
- <widget class="QLabel" row="2" column="2">
- <property name="name">
- <cstring>textLabel1</cstring>
- </property>
- <property name="enabled">
- <bool>false</bool>
- </property>
- <property name="sizePolicy">
- <sizepolicy>
- <hsizetype>0</hsizetype>
- <vsizetype>5</vsizetype>
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="text">
- <string> to </string>
- </property>
- </widget>
- <widget class="QRadioButton" row="4" column="0">
- <property name="name">
- <cstring>pairRangeRadioButton</cstring>
- </property>
- <property name="sizePolicy">
- <sizepolicy>
- <hsizetype>0</hsizetype>
- <vsizetype>0</vsizetype>
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="text">
- <string>Pair</string>
- </property>
- </widget>
- <widget class="QRadioButton" row="3" column="0">
- <property name="name">
- <cstring>pairRadioButton</cstring>
- </property>
- <property name="sizePolicy">
- <sizepolicy>
- <hsizetype>0</hsizetype>
- <vsizetype>0</vsizetype>
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="text">
- <string>Pair</string>
- </property>
- </widget>
- <widget class="QSpinBox" row="4" column="3">
- <property name="name">
- <cstring>pairRangeMaxSpinBox</cstring>
- </property>
- <property name="enabled">
- <bool>false</bool>
- </property>
- <property name="sizePolicy">
- <sizepolicy>
- <hsizetype>0</hsizetype>
- <vsizetype>0</vsizetype>
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="buttonSymbols">
- <enum>PlusMinus</enum>
- </property>
- <property name="maxValue">
- <number>17</number>
- </property>
- </widget>
- <widget class="QSpinBox" row="3" column="1">
- <property name="name">
- <cstring>pairSpinBox</cstring>
- </property>
- <property name="enabled">
- <bool>false</bool>
- </property>
- <property name="sizePolicy">
- <sizepolicy>
- <hsizetype>0</hsizetype>
- <vsizetype>0</vsizetype>
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="buttonSymbols">
- <enum>PlusMinus</enum>
- </property>
- <property name="maxValue">
- <number>17</number>
- </property>
- </widget>
- <widget class="QRadioButton" row="1" column="0">
- <property name="name">
- <cstring>oneRadioButton</cstring>
- </property>
- <property name="sizePolicy">
- <sizepolicy>
- <hsizetype>0</hsizetype>
- <vsizetype>0</vsizetype>
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="text">
- <string>Sector</string>
- </property>
- </widget>
- </grid>
- </widget>
- </grid>
- </widget>
- <spacer row="4" column="0">
- <property name="name">
- <cstring>spacer5</cstring>
- </property>
- <property name="orientation">
- <enum>Vertical</enum>
- </property>
- <property name="sizeType">
- <enum>Expanding</enum>
- </property>
- <property name="sizeHint">
- <size>
- <width>20</width>
- <height>120</height>
- </size>
- </property>
- </spacer>
- <widget class="QGroupBox" row="2" column="0">
- <property name="name">
- <cstring>threeDGroupBox</cstring>
- </property>
- <property name="enabled">
- <bool>false</bool>
- </property>
- <property name="sizePolicy">
- <sizepolicy>
- <hsizetype>5</hsizetype>
- <vsizetype>0</vsizetype>
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="title">
- <string>3D Properties</string>
- </property>
- <grid>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <property name="margin">
- <number>5</number>
- </property>
- <property name="spacing">
- <number>5</number>
- </property>
- <widget class="QLayoutWidget" row="0" column="0">
- <property name="name">
- <cstring>layout15</cstring>
- </property>
- <grid>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <widget class="QCheckBox" row="3" column="0" rowspan="1" colspan="2">
- <property name="name">
- <cstring>invertCheckBox</cstring>
- </property>
- <property name="text">
- <string>Invert Display</string>
- </property>
- </widget>
- <widget class="QCheckBox" row="0" column="0">
- <property name="name">
- <cstring>clusterCheckBox</cstring>
- </property>
- <property name="text">
- <string>Cluster</string>
- </property>
- </widget>
- <widget class="QCheckBox" row="0" column="1">
- <property name="name">
- <cstring>tracksCheckBox</cstring>
- </property>
- <property name="text">
- <string>Tracks</string>
- </property>
- </widget>
- <widget class="QCheckBox" row="2" column="0" rowspan="1" colspan="2">
- <property name="name">
- <cstring>keepViewCheckBox</cstring>
- </property>
- <property name="text">
- <string>Keep view on redisplay</string>
- </property>
- <property name="checked">
- <bool>true</bool>
- </property>
- </widget>
- <widget class="QCheckBox" row="1" column="0">
- <property name="name">
- <cstring>padrowCheckBox</cstring>
- </property>
- <property name="text">
- <string>Raw Data</string>
- </property>
- </widget>
- <widget class="QCheckBox" row="1" column="1">
- <property name="name">
- <cstring>geometryCheckBox</cstring>
- </property>
- <property name="text">
- <string>Geometry</string>
- </property>
- <property name="checked">
- <bool>true</bool>
- </property>
- </widget>
- </grid>
- </widget>
- </grid>
- </widget>
- <widget class="QButtonGroup" row="3" column="0">
- <property name="name">
- <cstring>threeDRawButtonGroup</cstring>
- </property>
- <property name="enabled">
- <bool>false</bool>
- </property>
- <property name="title">
- <string>3D Raw Properties</string>
- </property>
- <grid>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <property name="margin">
- <number>5</number>
- </property>
- <property name="spacing">
- <number>5</number>
- </property>
- <widget class="QLayoutWidget" row="0" column="0">
- <property name="name">
- <cstring>layout30</cstring>
- </property>
- <grid>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <property name="margin">
- <number>0</number>
- </property>
- <property name="spacing">
- <number>0</number>
- </property>
- <widget class="QRadioButton" row="1" column="0">
- <property name="name">
- <cstring>rawAllPadRowRadioButton</cstring>
- </property>
- <property name="enabled">
- <bool>false</bool>
- </property>
- <property name="text">
- <string>All PadRows</string>
- </property>
- </widget>
- <widget class="QRadioButton" row="0" column="0">
- <property name="name">
- <cstring>rawOnePadRowRadioButton</cstring>
- </property>
- <property name="enabled">
- <bool>false</bool>
- </property>
- <property name="text">
- <string>1 PadRow</string>
- </property>
- <property name="checked">
- <bool>true</bool>
- </property>
- </widget>
- </grid>
- </widget>
- </grid>
- </widget>
- <widget class="QGroupBox" row="0" column="0">
- <property name="name">
- <cstring>saveGroupBox</cstring>
- </property>
- <property name="enabled">
- <bool>false</bool>
- </property>
- <property name="title">
- <string>Save Event</string>
- </property>
- <hbox>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <property name="margin">
- <number>5</number>
- </property>
- <property name="spacing">
- <number>5</number>
- </property>
- <widget class="QPushButton">
- <property name="name">
- <cstring>savePushButton</cstring>
- </property>
- <property name="text">
- <string>Save all Histograms</string>
- </property>
- </widget>
- </hbox>
- </widget>
- </grid>
- </widget>
- </grid>
- </widget>
- <widget class="QWidget">
- <property name="name">
- <cstring>TrackProperties</cstring>
- </property>
- <property name="backgroundMode">
- <enum>PaletteBackground</enum>
- </property>
- <attribute name="label">
- <string>Track Properties</string>
- </attribute>
- <vbox>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <property name="margin">
- <number>1</number>
- </property>
- <property name="spacing">
- <number>1</number>
- </property>
- <widget class="QLayoutWidget">
- <property name="name">
- <cstring>layout24</cstring>
- </property>
- <vbox>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <widget class="QLayoutWidget">
- <property name="name">
- <cstring>layout22</cstring>
- </property>
- <vbox>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <widget class="QGroupBox">
- <property name="name">
- <cstring>trackPropGroupBox</cstring>
- </property>
- <property name="enabled">
- <bool>false</bool>
- </property>
- <property name="sizePolicy">
- <sizepolicy>
- <hsizetype>5</hsizetype>
- <vsizetype>0</vsizetype>
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="maximumSize">
- <size>
- <width>260</width>
- <height>32767</height>
- </size>
- </property>
- <property name="title">
- <string>Track Cuts</string>
- </property>
- <grid>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <property name="margin">
- <number>5</number>
- </property>
- <property name="spacing">
- <number>5</number>
- </property>
- <widget class="QLayoutWidget" row="0" column="0">
- <property name="name">
- <cstring>layout21</cstring>
- </property>
- <grid>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <widget class="QLabel" row="4" column="0">
- <property name="name">
- <cstring>textLabel2_2_2_2</cstring>
- </property>
- <property name="sizePolicy">
- <sizepolicy>
- <hsizetype>0</hsizetype>
- <vsizetype>0</vsizetype>
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="text">
- <string>Min. dip angle (lambda)</string>
- </property>
- </widget>
- <widget class="QLineEdit" row="4" column="1">
- <property name="name">
- <cstring>cutLambdaLineEdit</cstring>
- </property>
- <property name="sizePolicy">
- <sizepolicy>
- <hsizetype>5</hsizetype>
- <vsizetype>0</vsizetype>
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>45</width>
- <height>0</height>
- </size>
- </property>
- <property name="text">
- <string>-1</string>
- </property>
- <property name="alignment">
- <set>AlignRight</set>
- </property>
- </widget>
- <widget class="QLabel" row="5" column="0">
- <property name="name">
- <cstring>textLabel2_2_3</cstring>
- </property>
- <property name="sizePolicy">
- <sizepolicy>
- <hsizetype>0</hsizetype>
- <vsizetype>0</vsizetype>
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="font">
- <font>
- </font>
- </property>
- <property name="text">
- <string>Max. Incident Padrow</string>
- </property>
- </widget>
- <widget class="QLabel" row="3" column="0">
- <property name="name">
- <cstring>textLabel2_2_2_2_2</cstring>
- </property>
- <property name="sizePolicy">
- <sizepolicy>
- <hsizetype>0</hsizetype>
- <vsizetype>0</vsizetype>
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="text">
- <string>Min. azimuthal angle (psi)</string>
- </property>
- </widget>
- <widget class="QLabel" row="2" column="0">
- <property name="name">
- <cstring>textLabel2_2_2</cstring>
- </property>
- <property name="sizePolicy">
- <sizepolicy>
- <hsizetype>0</hsizetype>
- <vsizetype>0</vsizetype>
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="text">
- <string>Min. track length (s)</string>
- </property>
- </widget>
- <widget class="QLabel" row="1" column="0">
- <property name="name">
- <cstring>textLabel2_2</cstring>
- </property>
- <property name="sizePolicy">
- <sizepolicy>
- <hsizetype>0</hsizetype>
- <vsizetype>0</vsizetype>
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="text">
- <string>Min. pt</string>
- </property>
- </widget>
- <widget class="QSpinBox" row="0" column="1">
- <property name="name">
- <cstring>cutHitsSpinBox</cstring>
- </property>
- <property name="sizePolicy">
- <sizepolicy>
- <hsizetype>5</hsizetype>
- <vsizetype>0</vsizetype>
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="mouseTracking">
- <bool>false</bool>
- </property>
- <property name="buttonSymbols">
- <enum>PlusMinus</enum>
- </property>
- <property name="value">
- <number>0</number>
- </property>
- </widget>
- <widget class="QLineEdit" row="5" column="1">
- <property name="name">
- <cstring>cutPadrowLineEdit</cstring>
- </property>
- <property name="sizePolicy">
- <sizepolicy>
- <hsizetype>5</hsizetype>
- <vsizetype>0</vsizetype>
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>45</width>
- <height>0</height>
- </size>
- </property>
- <property name="text">
- <string>159</string>
- </property>
- <property name="alignment">
- <set>AlignRight</set>
- </property>
- </widget>
- <widget class="QLabel" row="0" column="0">
- <property name="name">
- <cstring>textLabel1_4</cstring>
- </property>
- <property name="sizePolicy">
- <sizepolicy>
- <hsizetype>0</hsizetype>
- <vsizetype>0</vsizetype>
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="text">
- <string>Min. hits / track</string>
- </property>
- </widget>
- <widget class="QLineEdit" row="2" column="1">
- <property name="name">
- <cstring>cutSLineEdit</cstring>
- </property>
- <property name="sizePolicy">
- <sizepolicy>
- <hsizetype>5</hsizetype>
- <vsizetype>0</vsizetype>
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>45</width>
- <height>0</height>
- </size>
- </property>
- <property name="text">
- <string>0</string>
- </property>
- <property name="alignment">
- <set>AlignRight</set>
- </property>
- </widget>
- <widget class="QLineEdit" row="1" column="1">
- <property name="name">
- <cstring>cutPtLineEdit</cstring>
- </property>
- <property name="sizePolicy">
- <sizepolicy>
- <hsizetype>5</hsizetype>
- <vsizetype>0</vsizetype>
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>45</width>
- <height>0</height>
- </size>
- </property>
- <property name="text">
- <string>0</string>
- </property>
- <property name="alignment">
- <set>AlignRight</set>
- </property>
- </widget>
- <widget class="QLineEdit" row="3" column="1">
- <property name="name">
- <cstring>cutPsiLineEdit</cstring>
- </property>
- <property name="sizePolicy">
- <sizepolicy>
- <hsizetype>5</hsizetype>
- <vsizetype>0</vsizetype>
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>45</width>
- <height>0</height>
- </size>
- </property>
- <property name="text">
- <string>-1</string>
- </property>
- <property name="alignment">
- <set>AlignRight</set>
- </property>
- </widget>
- </grid>
- </widget>
- </grid>
- </widget>
- <widget class="QGroupBox">
- <property name="name">
- <cstring>selectTrackGroupBox</cstring>
- </property>
- <property name="enabled">
- <bool>false</bool>
- </property>
- <property name="sizePolicy">
- <sizepolicy>
- <hsizetype>5</hsizetype>
- <vsizetype>0</vsizetype>
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="maximumSize">
- <size>
- <width>260</width>
- <height>32767</height>
- </size>
- </property>
- <property name="title">
- <string>Select Single Track</string>
- </property>
- <grid>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <property name="margin">
- <number>5</number>
- </property>
- <property name="spacing">
- <number>5</number>
- </property>
- <widget class="QLayoutWidget" row="0" column="0">
- <property name="name">
- <cstring>layout16</cstring>
- </property>
- <grid>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <widget class="QSpinBox" row="2" column="1">
- <property name="name">
- <cstring>selectTrackSpinBox</cstring>
- </property>
- <property name="enabled">
- <bool>false</bool>
- </property>
- <property name="sizePolicy">
- <sizepolicy>
- <hsizetype>7</hsizetype>
- <vsizetype>0</vsizetype>
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="buttonSymbols">
- <enum>PlusMinus</enum>
- </property>
- <property name="minValue">
- <number>0</number>
- </property>
- <property name="value">
- <number>0</number>
- </property>
- </widget>
- <widget class="QLabel" row="2" column="0">
- <property name="name">
- <cstring>textLabel1_5</cstring>
- </property>
- <property name="text">
- <string>Select track</string>
- </property>
- </widget>
- <widget class="QLabel" row="1" column="0">
- <property name="name">
- <cstring>textLabel1_6</cstring>
- </property>
- <property name="text">
- <string>Select slice</string>
- </property>
- </widget>
- <widget class="QSpinBox" row="1" column="1">
- <property name="name">
- <cstring>selectTrackSectorSpinBox</cstring>
- </property>
- <property name="sizePolicy">
- <sizepolicy>
- <hsizetype>7</hsizetype>
- <vsizetype>0</vsizetype>
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>0</width>
- <height>0</height>
- </size>
- </property>
- <property name="buttonSymbols">
- <enum>PlusMinus</enum>
- </property>
- <property name="maxValue">
- <number>35</number>
- </property>
- </widget>
- <widget class="QCheckBox" row="0" column="0" rowspan="1" colspan="2">
- <property name="name">
- <cstring>selectTrackCheckBox</cstring>
- </property>
- <property name="text">
- <string>Select single track</string>
- </property>
- </widget>
- </grid>
- </widget>
- </grid>
- </widget>
- <widget class="QGroupBox">
- <property name="name">
- <cstring>trackParamGroupBox</cstring>
- </property>
- <property name="enabled">
- <bool>false</bool>
- </property>
- <property name="sizePolicy">
- <sizepolicy>
- <hsizetype>5</hsizetype>
- <vsizetype>0</vsizetype>
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="maximumSize">
- <size>
- <width>260</width>
- <height>32767</height>
- </size>
- </property>
- <property name="title">
- <string>Track parameter</string>
- </property>
- <grid>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <property name="margin">
- <number>5</number>
- </property>
- <property name="spacing">
- <number>5</number>
- </property>
- <widget class="QLayoutWidget" row="0" column="0">
- <property name="name">
- <cstring>layout26</cstring>
- </property>
- <grid>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <widget class="QLabel" row="9" column="1">
- <property name="name">
- <cstring>trackParamRadiusTextLabel</cstring>
- </property>
- <property name="sizePolicy">
- <sizepolicy>
- <hsizetype>7</hsizetype>
- <vsizetype>0</vsizetype>
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="frameShape">
- <enum>Box</enum>
- </property>
- <property name="text">
- <string></string>
- </property>
- </widget>
- <widget class="QLabel" row="7" column="1">
- <property name="name">
- <cstring>trackParamPsiTextLabel</cstring>
- </property>
- <property name="sizePolicy">
- <sizepolicy>
- <hsizetype>7</hsizetype>
- <vsizetype>0</vsizetype>
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="frameShape">
- <enum>Box</enum>
- </property>
- <property name="text">
- <string></string>
- </property>
- </widget>
- <widget class="QLabel" row="4" column="1">
- <property name="name">
- <cstring>trackParamNHitsTextLabel</cstring>
- </property>
- <property name="sizePolicy">
- <sizepolicy>
- <hsizetype>7</hsizetype>
- <vsizetype>0</vsizetype>
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="frameShape">
- <enum>Box</enum>
- </property>
- <property name="text">
- <string></string>
- </property>
- </widget>
- <widget class="QLabel" row="0" column="0">
- <property name="name">
- <cstring>textLabel1_7</cstring>
- </property>
- <property name="sizePolicy">
- <sizepolicy>
- <hsizetype>0</hsizetype>
- <vsizetype>0</vsizetype>
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="text">
- <string>Slice</string>
- </property>
- </widget>
- <widget class="QLabel" row="9" column="0">
- <property name="name">
- <cstring>textLabel5_2</cstring>
- </property>
- <property name="sizePolicy">
- <sizepolicy>
- <hsizetype>0</hsizetype>
- <vsizetype>0</vsizetype>
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="font">
- <font>
- <pointsize>12</pointsize>
- </font>
- </property>
- <property name="text">
- <string>Radius [cm]</string>
- </property>
- </widget>
- <widget class="QLabel" row="7" column="0">
- <property name="name">
- <cstring>textLabel3_3_2</cstring>
- </property>
- <property name="sizePolicy">
- <sizepolicy>
- <hsizetype>0</hsizetype>
- <vsizetype>0</vsizetype>
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="text">
- <string>Psi</string>
- </property>
- </widget>
- <widget class="QLabel" row="6" column="1">
- <property name="name">
- <cstring>trackParamLambdaTextLabel</cstring>
- </property>
- <property name="sizePolicy">
- <sizepolicy>
- <hsizetype>7</hsizetype>
- <vsizetype>0</vsizetype>
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="frameShape">
- <enum>Box</enum>
- </property>
- <property name="text">
- <string></string>
- </property>
- </widget>
- <widget class="QLabel" row="8" column="0">
- <property name="name">
- <cstring>textLabel4_2_2</cstring>
- </property>
- <property name="sizePolicy">
- <sizepolicy>
- <hsizetype>0</hsizetype>
- <vsizetype>0</vsizetype>
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="text">
- <string>Charge [e]</string>
- </property>
- </widget>
- <widget class="QLabel" row="4" column="0">
- <property name="name">
- <cstring>textLabel5</cstring>
- </property>
- <property name="sizePolicy">
- <sizepolicy>
- <hsizetype>0</hsizetype>
- <vsizetype>0</vsizetype>
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="text">
- <string>Number of cluster</string>
- </property>
- </widget>
- <widget class="QLabel" row="6" column="0">
- <property name="name">
- <cstring>textLabel2_4_2</cstring>
- </property>
- <property name="sizePolicy">
- <sizepolicy>
- <hsizetype>0</hsizetype>
- <vsizetype>0</vsizetype>
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="text">
- <string>Dip angle (lambda)</string>
- </property>
- </widget>
- <widget class="QLabel" row="2" column="0">
- <property name="name">
- <cstring>textLabel3_3</cstring>
- </property>
- <property name="sizePolicy">
- <sizepolicy>
- <hsizetype>0</hsizetype>
- <vsizetype>0</vsizetype>
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="text">
- <string>Curvature [1 / cm]</string>
- </property>
- </widget>
- <widget class="QLabel" row="0" column="1">
- <property name="name">
- <cstring>trackParamSliceTextLabel</cstring>
- </property>
- <property name="sizePolicy">
- <sizepolicy>
- <hsizetype>7</hsizetype>
- <vsizetype>0</vsizetype>
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>50</width>
- <height>20</height>
- </size>
- </property>
- <property name="frameShape">
- <enum>Box</enum>
- </property>
- <property name="lineWidth">
- <number>1</number>
- </property>
- <property name="text">
- <string></string>
- </property>
- </widget>
- <widget class="QLabel" row="3" column="0">
- <property name="name">
- <cstring>textLabel4_2</cstring>
- </property>
- <property name="sizePolicy">
- <sizepolicy>
- <hsizetype>0</hsizetype>
- <vsizetype>0</vsizetype>
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="text">
- <string>Pt [GeV / c]</string>
- </property>
- </widget>
- <widget class="QLabel" row="3" column="1">
- <property name="name">
- <cstring>trackParamPtTextLabel</cstring>
- </property>
- <property name="sizePolicy">
- <sizepolicy>
- <hsizetype>7</hsizetype>
- <vsizetype>0</vsizetype>
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="frameShape">
- <enum>Box</enum>
- </property>
- <property name="text">
- <string></string>
- </property>
- </widget>
- <widget class="QLabel" row="5" column="1">
- <property name="name">
- <cstring>trackParamPhi0TextLabel</cstring>
- </property>
- <property name="sizePolicy">
- <sizepolicy>
- <hsizetype>7</hsizetype>
- <vsizetype>0</vsizetype>
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="frameShape">
- <enum>Box</enum>
- </property>
- <property name="lineWidth">
- <number>1</number>
- </property>
- <property name="text">
- <string></string>
- </property>
- </widget>
- <widget class="QLabel" row="2" column="1">
- <property name="name">
- <cstring>trackParamKappaTextLabel</cstring>
- </property>
- <property name="sizePolicy">
- <sizepolicy>
- <hsizetype>7</hsizetype>
- <vsizetype>0</vsizetype>
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="frameShape">
- <enum>Box</enum>
- </property>
- <property name="text">
- <string></string>
- </property>
- </widget>
- <widget class="QLabel" row="1" column="0">
- <property name="name">
- <cstring>textLabel2_4</cstring>
- </property>
- <property name="sizePolicy">
- <sizepolicy>
- <hsizetype>0</hsizetype>
- <vsizetype>0</vsizetype>
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="text">
- <string>Track ID</string>
- </property>
- </widget>
- <widget class="QLabel" row="8" column="1">
- <property name="name">
- <cstring>trackParamChargeTextLabel</cstring>
- </property>
- <property name="sizePolicy">
- <sizepolicy>
- <hsizetype>7</hsizetype>
- <vsizetype>0</vsizetype>
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="frameShape">
- <enum>Box</enum>
- </property>
- <property name="text">
- <string></string>
- </property>
- </widget>
- <widget class="QLabel" row="1" column="1">
- <property name="name">
- <cstring>trackParamIDTextLabel</cstring>
- </property>
- <property name="sizePolicy">
- <sizepolicy>
- <hsizetype>7</hsizetype>
- <vsizetype>0</vsizetype>
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="frameShape">
- <enum>Box</enum>
- </property>
- <property name="text">
- <string></string>
- </property>
- </widget>
- <widget class="QLabel" row="5" column="0">
- <property name="name">
- <cstring>textLabel1_7_2</cstring>
- </property>
- <property name="sizePolicy">
- <sizepolicy>
- <hsizetype>0</hsizetype>
- <vsizetype>0</vsizetype>
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="text">
- <string>Phi0</string>
- </property>
- </widget>
- </grid>
- </widget>
- </grid>
- </widget>
- </vbox>
- </widget>
- <spacer>
- <property name="name">
- <cstring>spacer6</cstring>
- </property>
- <property name="orientation">
- <enum>Vertical</enum>
- </property>
- <property name="sizeType">
- <enum>Expanding</enum>
- </property>
- <property name="sizeHint">
- <size>
- <width>20</width>
- <height>21</height>
- </size>
- </property>
- </spacer>
- </vbox>
- </widget>
- </vbox>
- </widget>
- <widget class="QWidget">
- <property name="name">
- <cstring>ClusterPropertiese</cstring>
- </property>
- <property name="backgroundMode">
- <enum>PaletteBackground</enum>
- </property>
- <attribute name="label">
- <string>Cluster Properties</string>
- </attribute>
- <grid>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <property name="margin">
- <number>1</number>
- </property>
- <property name="spacing">
- <number>1</number>
- </property>
- <widget class="QLayoutWidget" row="0" column="0">
- <property name="name">
- <cstring>layout33</cstring>
- </property>
- <grid>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <widget class="QButtonGroup" row="0" column="0">
- <property name="name">
- <cstring>clusterPropButtonGroup</cstring>
- </property>
- <property name="enabled">
- <bool>false</bool>
- </property>
- <property name="sizePolicy">
- <sizepolicy>
- <hsizetype>5</hsizetype>
- <vsizetype>0</vsizetype>
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="title">
- <string>Select Cluster</string>
- </property>
- <property name="alignment">
- <set>AlignTop</set>
- </property>
- <grid>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <property name="margin">
- <number>5</number>
- </property>
- <property name="spacing">
- <number>5</number>
- </property>
- <widget class="QLayoutWidget" row="0" column="0">
- <property name="name">
- <cstring>layout32</cstring>
- </property>
- <grid>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <widget class="QRadioButton" row="2" column="0">
- <property name="name">
- <cstring>unusedClusterRadioButton</cstring>
- </property>
- <property name="text">
- <string>Draw unused cluster</string>
- </property>
- </widget>
- <widget class="QRadioButton" row="0" column="0">
- <property name="name">
- <cstring>allClusterRadioButton</cstring>
- </property>
- <property name="text">
- <string>Draw all cluster</string>
- </property>
- <property name="checked">
- <bool>true</bool>
- </property>
- <property name="buttonGroupId">
- <number>-1</number>
- </property>
- </widget>
- <widget class="QRadioButton" row="1" column="0">
- <property name="name">
- <cstring>usedClusterRadioButton</cstring>
- </property>
- <property name="text">
- <string>Draw used cluster</string>
- </property>
- <property name="buttonGroupId">
- <number>-1</number>
- </property>
- </widget>
- </grid>
- </widget>
- </grid>
- </widget>
- <spacer row="1" column="0">
- <property name="name">
- <cstring>spacer1</cstring>
- </property>
- <property name="orientation">
- <enum>Vertical</enum>
- </property>
- <property name="sizeType">
- <enum>Expanding</enum>
- </property>
- <property name="sizeHint">
- <size>
- <width>20</width>
- <height>20</height>
- </size>
- </property>
- </spacer>
- </grid>
- </widget>
- </grid>
- </widget>
- <widget class="QWidget">
- <property name="name">
- <cstring>RawProperties</cstring>
- </property>
- <property name="backgroundMode">
- <enum>PaletteBackground</enum>
- </property>
- <attribute name="label">
- <string>Raw Properties</string>
- </attribute>
- <grid>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <property name="margin">
- <number>1</number>
- </property>
- <property name="spacing">
- <number>1</number>
- </property>
- <widget class="QLayoutWidget" row="0" column="0">
- <property name="name">
- <cstring>layout32</cstring>
- </property>
- <grid>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <property name="margin">
- <number>5</number>
- </property>
- <property name="spacing">
- <number>5</number>
- </property>
- <widget class="QGroupBox" row="1" column="0">
- <property name="name">
- <cstring>rawSliceGroupBox</cstring>
- </property>
- <property name="enabled">
- <bool>false</bool>
- </property>
- <property name="sizePolicy">
- <sizepolicy>
- <hsizetype>5</hsizetype>
- <vsizetype>0</vsizetype>
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="title">
- <string>Raw Slice</string>
- </property>
- <grid>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <property name="margin">
- <number>5</number>
- </property>
- <property name="spacing">
- <number>5</number>
- </property>
- <widget class="QLayoutWidget" row="0" column="0">
- <property name="name">
- <cstring>layout25</cstring>
- </property>
- <hbox>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <widget class="QLabel">
- <property name="name">
- <cstring>textLabel2_5</cstring>
- </property>
- <property name="sizePolicy">
- <sizepolicy>
- <hsizetype>0</hsizetype>
- <vsizetype>5</vsizetype>
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="text">
- <string>Slice [0,35]</string>
- </property>
- </widget>
- <widget class="QSpinBox">
- <property name="name">
- <cstring>rawSectorSpinBox</cstring>
- </property>
- <property name="sizePolicy">
- <sizepolicy>
- <hsizetype>7</hsizetype>
- <vsizetype>0</vsizetype>
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="buttonSymbols">
- <enum>PlusMinus</enum>
- </property>
- <property name="maxValue">
- <number>35</number>
- </property>
- </widget>
- </hbox>
- </widget>
- </grid>
- </widget>
- <widget class="QButtonGroup" row="3" column="0">
- <property name="name">
- <cstring>frontDataButtonGroup</cstring>
- </property>
- <property name="enabled">
- <bool>false</bool>
- </property>
- <property name="title">
- <string>Front View - Data</string>
- </property>
- <grid>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <property name="margin">
- <number>5</number>
- </property>
- <property name="spacing">
- <number>5</number>
- </property>
- <widget class="QLayoutWidget" row="0" column="0">
- <property name="name">
- <cstring>layout26</cstring>
- </property>
- <vbox>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <property name="margin">
- <number>0</number>
- </property>
- <property name="spacing">
- <number>0</number>
- </property>
- <widget class="QRadioButton">
- <property name="name">
- <cstring>frontSumRadioButton</cstring>
- </property>
- <property name="text">
- <string>Sum of all TimeBins</string>
- </property>
- </widget>
- <widget class="QRadioButton">
- <property name="name">
- <cstring>frontAverageRadioButton</cstring>
- </property>
- <property name="text">
- <string>Average of all TimeBins</string>
- </property>
- </widget>
- <widget class="QRadioButton">
- <property name="name">
- <cstring>frontMaxRadioButton</cstring>
- </property>
- <property name="text">
- <string>Maximum of all TimeBins</string>
- </property>
- <property name="checked">
- <bool>true</bool>
- </property>
- </widget>
- </vbox>
- </widget>
- </grid>
- </widget>
- <spacer row="5" column="0">
- <property name="name">
- <cstring>spacer7</cstring>
- </property>
- <property name="orientation">
- <enum>Vertical</enum>
- </property>
- <property name="sizeType">
- <enum>Expanding</enum>
- </property>
- <property name="sizeHint">
- <size>
- <width>20</width>
- <height>38</height>
- </size>
- </property>
- </spacer>
- <widget class="QGroupBox" row="2" column="0">
- <property name="name">
- <cstring>padrowGroupBox</cstring>
- </property>
- <property name="enabled">
- <bool>false</bool>
- </property>
- <property name="sizePolicy">
- <sizepolicy>
- <hsizetype>5</hsizetype>
- <vsizetype>0</vsizetype>
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="title">
- <string>PadRow View</string>
- </property>
- <grid>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <property name="margin">
- <number>5</number>
- </property>
- <property name="spacing">
- <number>5</number>
- </property>
- <widget class="QLayoutWidget" row="0" column="0">
- <property name="name">
- <cstring>layout41</cstring>
- </property>
- <grid>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <property name="margin">
- <number>0</number>
- </property>
- <property name="spacing">
- <number>0</number>
- </property>
- <widget class="QSlider" row="3" column="0" rowspan="1" colspan="2">
- <property name="name">
- <cstring>padSlider</cstring>
- </property>
- <property name="orientation">
- <enum>Horizontal</enum>
- </property>
- <property name="tickmarks">
- <enum>Below</enum>
- </property>
- <property name="tickInterval">
- <number>5</number>
- </property>
- </widget>
- <widget class="QLabel" row="0" column="0">
- <property name="name">
- <cstring>textLabel3_4</cstring>
- </property>
- <property name="sizePolicy">
- <sizepolicy>
- <hsizetype>5</hsizetype>
- <vsizetype>5</vsizetype>
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="text">
- <string>PadRow [0,158]</string>
- </property>
- </widget>
- <widget class="QCheckBox" row="4" column="0" rowspan="1" colspan="2">
- <property name="name">
- <cstring>padrowSplitCheckBox</cstring>
- </property>
- <property name="text">
- <string>PadRow / Pad in same canvas</string>
- </property>
- </widget>
- <widget class="QSlider" row="1" column="0" rowspan="1" colspan="2">
- <property name="name">
- <cstring>padrowSlider</cstring>
- </property>
- <property name="maxValue">
- <number>158</number>
- </property>
- <property name="orientation">
- <enum>Horizontal</enum>
- </property>
- <property name="tickmarks">
- <enum>Below</enum>
- </property>
- </widget>
- <widget class="QSpinBox" row="2" column="1">
- <property name="name">
- <cstring>padSpinBox</cstring>
- </property>
- <property name="sizePolicy">
- <sizepolicy>
- <hsizetype>0</hsizetype>
- <vsizetype>0</vsizetype>
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>70</width>
- <height>0</height>
- </size>
- </property>
- <property name="buttonSymbols">
- <enum>PlusMinus</enum>
- </property>
- </widget>
- <widget class="QLabel" row="2" column="0">
- <property name="name">
- <cstring>textLabel2_3_2</cstring>
- </property>
- <property name="text">
- <string>Pad</string>
- </property>
- </widget>
- <widget class="QSpinBox" row="0" column="1">
- <property name="name">
- <cstring>padrowSpinBox</cstring>
- </property>
- <property name="sizePolicy">
- <sizepolicy>
- <hsizetype>0</hsizetype>
- <vsizetype>0</vsizetype>
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>70</width>
- <height>0</height>
- </size>
- </property>
- <property name="buttonSymbols">
- <enum>PlusMinus</enum>
- </property>
- <property name="maxValue">
- <number>158</number>
- </property>
- </widget>
- </grid>
- </widget>
- </grid>
- </widget>
- <widget class="QGroupBox" row="0" column="0">
- <property name="name">
- <cstring>rawZeroGroupBox</cstring>
- </property>
- <property name="enabled">
- <bool>false</bool>
- </property>
- <property name="sizePolicy">
- <sizepolicy>
- <hsizetype>5</hsizetype>
- <vsizetype>0</vsizetype>
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="title">
- <string>Zero Suppression</string>
- </property>
- <grid>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <property name="margin">
- <number>5</number>
- </property>
- <property name="spacing">
- <number>5</number>
- </property>
- <widget class="QCheckBox" row="0" column="0">
- <property name="name">
- <cstring>rawZeroCheckBox</cstring>
- </property>
- <property name="text">
- <string>Apply Zero Suppression</string>
- </property>
- <property name="checked">
- <bool>true</bool>
- </property>
- </widget>
- </grid>
- </widget>
- <widget class="QButtonGroup" row="4" column="0">
- <property name="name">
- <cstring>frontDisplayButtonGroup</cstring>
- </property>
- <property name="enabled">
- <bool>false</bool>
- </property>
- <property name="title">
- <string>Front View - Display</string>
- </property>
- <grid>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <property name="margin">
- <number>5</number>
- </property>
- <property name="spacing">
- <number>5</number>
- </property>
- <widget class="QLayoutWidget" row="0" column="0">
- <property name="name">
- <cstring>layout40</cstring>
- </property>
- <grid>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <property name="margin">
- <number>0</number>
- </property>
- <property name="spacing">
- <number>0</number>
- </property>
- <widget class="QLayoutWidget" row="2" column="0">
- <property name="name">
- <cstring>layout34</cstring>
- </property>
- <hbox>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <property name="margin">
- <number>0</number>
- </property>
- <property name="spacing">
- <number>0</number>
- </property>
- <widget class="QLabel">
- <property name="name">
- <cstring>textLabel1_9_2</cstring>
- </property>
- <property name="text">
- <string>Timebin</string>
- </property>
- </widget>
- <widget class="QSpinBox">
- <property name="name">
- <cstring>oneTimeBinSpinBox</cstring>
- </property>
- <property name="sizePolicy">
- <sizepolicy>
- <hsizetype>0</hsizetype>
- <vsizetype>0</vsizetype>
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>70</width>
- <height>0</height>
- </size>
- </property>
- <property name="buttonSymbols">
- <enum>PlusMinus</enum>
- </property>
- <property name="maxValue">
- <number>1023</number>
- </property>
- </widget>
- </hbox>
- </widget>
- <widget class="QLayoutWidget" row="7" column="0">
- <property name="name">
- <cstring>layout35</cstring>
- </property>
- <hbox>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <property name="margin">
- <number>0</number>
- </property>
- <property name="spacing">
- <number>0</number>
- </property>
- <widget class="QLabel">
- <property name="name">
- <cstring>textLabel1_9_2_3</cstring>
- </property>
- <property name="text">
- <string>Max Timebin</string>
- </property>
- </widget>
- <widget class="QSpinBox">
- <property name="name">
- <cstring>maxTimeBinSpinBox</cstring>
- </property>
- <property name="sizePolicy">
- <sizepolicy>
- <hsizetype>0</hsizetype>
- <vsizetype>0</vsizetype>
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>70</width>
- <height>0</height>
- </size>
- </property>
- <property name="buttonSymbols">
- <enum>PlusMinus</enum>
- </property>
- <property name="maxValue">
- <number>1023</number>
- </property>
- <property name="lineStep">
- <number>100</number>
- </property>
- <property name="value">
- <number>1023</number>
- </property>
- </widget>
- </hbox>
- </widget>
- <widget class="QSlider" row="3" column="0">
- <property name="name">
- <cstring>oneTimeBinSlider</cstring>
- </property>
- <property name="maxValue">
- <number>1024</number>
- </property>
- <property name="lineStep">
- <number>1</number>
- </property>
- <property name="orientation">
- <enum>Horizontal</enum>
- </property>
- <property name="tickmarks">
- <enum>Below</enum>
- </property>
- <property name="tickInterval">
- <number>25</number>
- </property>
- </widget>
- <widget class="QSlider" row="8" column="0">
- <property name="name">
- <cstring>maxTimeBinSlider</cstring>
- </property>
- <property name="maxValue">
- <number>1024</number>
- </property>
- <property name="lineStep">
- <number>1</number>
- </property>
- <property name="orientation">
- <enum>Horizontal</enum>
- </property>
- <property name="tickmarks">
- <enum>Below</enum>
- </property>
- <property name="tickInterval">
- <number>25</number>
- </property>
- </widget>
- <widget class="QLayoutWidget" row="5" column="0">
- <property name="name">
- <cstring>layout33</cstring>
- </property>
- <hbox>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <property name="margin">
- <number>0</number>
- </property>
- <property name="spacing">
- <number>0</number>
- </property>
- <widget class="QLabel">
- <property name="name">
- <cstring>textLabel1_9_2_2</cstring>
- </property>
- <property name="text">
- <string>Min Timebin</string>
- </property>
- </widget>
- <widget class="QSpinBox">
- <property name="name">
- <cstring>minTimeBinSpinBox</cstring>
- </property>
- <property name="sizePolicy">
- <sizepolicy>
- <hsizetype>0</hsizetype>
- <vsizetype>0</vsizetype>
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>70</width>
- <height>0</height>
- </size>
- </property>
- <property name="buttonSymbols">
- <enum>PlusMinus</enum>
- </property>
- <property name="maxValue">
- <number>1023</number>
- </property>
- </widget>
- </hbox>
- </widget>
- <widget class="QCheckBox" row="9" column="0">
- <property name="name">
- <cstring>frontSplitCheckBox</cstring>
- </property>
- <property name="text">
- <string>Front / Pad in same canvas</string>
- </property>
- </widget>
- <widget class="QSlider" row="6" column="0">
- <property name="name">
- <cstring>minTimeBinSlider</cstring>
- </property>
- <property name="maxValue">
- <number>1024</number>
- </property>
- <property name="lineStep">
- <number>1</number>
- </property>
- <property name="orientation">
- <enum>Horizontal</enum>
- </property>
- <property name="tickmarks">
- <enum>Below</enum>
- </property>
- <property name="tickInterval">
- <number>25</number>
- </property>
- </widget>
- <widget class="QRadioButton" row="4" column="0">
- <property name="name">
- <cstring>frontRangeRadioButton</cstring>
- </property>
- <property name="text">
- <string>Display Range of TimeBins</string>
- </property>
- </widget>
- <widget class="QRadioButton" row="1" column="0">
- <property name="name">
- <cstring>frontOneRadioButton</cstring>
- </property>
- <property name="text">
- <string>Display 1 TimeBin</string>
- </property>
- </widget>
- <widget class="QRadioButton" row="0" column="0">
- <property name="name">
- <cstring>frontAllRadioButton</cstring>
- </property>
- <property name="text">
- <string>Display all TimeBins</string>
- </property>
- <property name="checked">
- <bool>true</bool>
- </property>
- </widget>
- </grid>
- </widget>
- </grid>
- </widget>
- </grid>
- </widget>
- </grid>
- </widget>
- </widget>
- <widget class="QLayoutWidget" row="0" column="0">
- <property name="name">
- <cstring>layout25</cstring>
- </property>
- <vbox>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <widget class="QFrame">
- <property name="name">
- <cstring>frame3</cstring>
- </property>
- <property name="sizePolicy">
- <sizepolicy>
- <hsizetype>0</hsizetype>
- <vsizetype>0</vsizetype>
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>265</width>
- <height>70</height>
- </size>
- </property>
- <property name="maximumSize">
- <size>
- <width>265</width>
- <height>70</height>
- </size>
- </property>
- <property name="frameShape">
- <enum>StyledPanel</enum>
- </property>
- <property name="frameShadow">
- <enum>Plain</enum>
- </property>
- <property name="lineWidth">
- <number>0</number>
- </property>
- <property name="midLineWidth">
- <number>0</number>
- </property>
- <grid>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <property name="margin">
- <number>0</number>
- </property>
- <property name="spacing">
- <number>0</number>
- </property>
- <widget class="QLabel" row="0" column="0">
- <property name="name">
- <cstring>pixmapLabel1_2</cstring>
- </property>
- <property name="sizePolicy">
- <sizepolicy>
- <hsizetype>0</hsizetype>
- <vsizetype>0</vsizetype>
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="scaledContents">
- <bool>true</bool>
- </property>
- </widget>
- <widget class="QLabel" row="0" column="1">
- <property name="name">
- <cstring>pixmapLabel2</cstring>
- </property>
- <property name="sizePolicy">
- <sizepolicy>
- <hsizetype>0</hsizetype>
- <vsizetype>0</vsizetype>
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="scaledContents">
- <bool>true</bool>
- </property>
- </widget>
- <widget class="QLayoutWidget" row="0" column="0">
- <property name="name">
- <cstring>layout56</cstring>
- </property>
- <hbox>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <property name="margin">
- <number>0</number>
- </property>
- <property name="spacing">
- <number>0</number>
- </property>
- <spacer>
- <property name="name">
- <cstring>spacer6_2</cstring>
- </property>
- <property name="orientation">
- <enum>Horizontal</enum>
- </property>
- <property name="sizeType">
- <enum>Fixed</enum>
- </property>
- <property name="sizeHint">
- <size>
- <width>16</width>
- <height>20</height>
- </size>
- </property>
- </spacer>
- <widget class="QLabel">
- <property name="name">
- <cstring>pixmapLabel1</cstring>
- </property>
- <property name="sizePolicy">
- <sizepolicy>
- <hsizetype>0</hsizetype>
- <vsizetype>0</vsizetype>
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="pixmap">
- <pixmap>KIPLogo.gif</pixmap>
- </property>
- <property name="scaledContents">
- <bool>true</bool>
- </property>
- </widget>
- <widget class="QLabel">
- <property name="name">
- <cstring>textLabel1_3</cstring>
- </property>
- <property name="sizePolicy">
- <sizepolicy>
- <hsizetype>7</hsizetype>
- <vsizetype>5</vsizetype>
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="paletteForegroundColor">
- <color>
- <red>170</red>
- <green>170</green>
- <blue>255</blue>
- </color>
- </property>
- <property name="paletteBackgroundColor">
- <color>
- <red>255</red>
- <green>255</green>
- <blue>255</blue>
- </color>
- </property>
- <property name="font">
- <font>
- <bold>1</bold>
- </font>
- </property>
- <property name="text">
- <string><div align="center"><font size="+3">HLT</font><br>Online<br>Display</div></string>
- </property>
- <property name="alignment">
- <set>WordBreak|AlignVCenter|AlignRight</set>
- </property>
- </widget>
- <widget class="QLabel">
- <property name="name">
- <cstring>pixmapLabel2_2</cstring>
- </property>
- <property name="sizePolicy">
- <sizepolicy>
- <hsizetype>0</hsizetype>
- <vsizetype>0</vsizetype>
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="pixmap">
- <pixmap>AliceLogo.gif</pixmap>
- </property>
- <property name="scaledContents">
- <bool>true</bool>
- </property>
- </widget>
- <spacer>
- <property name="name">
- <cstring>spacer6_2_2</cstring>
- </property>
- <property name="orientation">
- <enum>Horizontal</enum>
- </property>
- <property name="sizeType">
- <enum>Fixed</enum>
- </property>
- <property name="sizeHint">
- <size>
- <width>16</width>
- <height>20</height>
- </size>
- </property>
- </spacer>
- </hbox>
- </widget>
- </grid>
- </widget>
- <widget class="QGroupBox">
- <property name="name">
- <cstring>eventGroupBox</cstring>
- </property>
- <property name="enabled">
- <bool>false</bool>
- </property>
- <property name="sizePolicy">
- <sizepolicy>
- <hsizetype>5</hsizetype>
- <vsizetype>0</vsizetype>
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="title">
- <string>Display Event</string>
- </property>
- <grid>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <property name="margin">
- <number>5</number>
- </property>
- <property name="spacing">
- <number>5</number>
- </property>
- <widget class="QLayoutWidget" row="0" column="0">
- <property name="name">
- <cstring>layout24</cstring>
- </property>
- <vbox>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <widget class="QLayoutWidget">
- <property name="name">
- <cstring>layout22</cstring>
- </property>
- <hbox>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <widget class="QLabel">
- <property name="name">
- <cstring>textLabel2</cstring>
- </property>
- <property name="sizePolicy">
- <sizepolicy>
- <hsizetype>0</hsizetype>
- <vsizetype>5</vsizetype>
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="text">
- <string>Event ID</string>
- </property>
- </widget>
- <widget class="QLabel">
- <property name="name">
- <cstring>eventIDTextLabel</cstring>
- </property>
- <property name="frameShape">
- <enum>Box</enum>
- </property>
- <property name="lineWidth">
- <number>1</number>
- </property>
- <property name="text">
- <string>HLT EVENT ID</string>
- </property>
- </widget>
- </hbox>
- </widget>
- <widget class="QLayoutWidget">
- <property name="name">
- <cstring>layout70</cstring>
- </property>
- <hbox>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <widget class="QPushButton">
- <property name="name">
- <cstring>nextEventPushButton</cstring>
- </property>
- <property name="enabled">
- <bool>false</bool>
- </property>
- <property name="text">
- <string>Next</string>
- </property>
- </widget>
- <widget class="QPushButton">
- <property name="name">
- <cstring>redisplayPushButton</cstring>
- </property>
- <property name="enabled">
- <bool>false</bool>
- </property>
- <property name="text">
- <string>Redisplay</string>
- </property>
- </widget>
- </hbox>
- </widget>
- <widget class="QLayoutWidget">
- <property name="name">
- <cstring>layout14</cstring>
- </property>
- <hbox>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <widget class="QPushButton">
- <property name="name">
- <cstring>eventLoopPushButton</cstring>
- </property>
- <property name="text">
- <string>Start Loop</string>
- </property>
- </widget>
- <widget class="QLayoutWidget">
- <property name="name">
- <cstring>layout13</cstring>
- </property>
- <hbox>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <widget class="QLabel">
- <property name="name">
- <cstring>textLabel1_8</cstring>
- </property>
- <property name="text">
- <string>Update</string>
- </property>
- <property name="alignment">
- <set>AlignVCenter|AlignRight</set>
- </property>
- </widget>
- <widget class="QSpinBox">
- <property name="name">
- <cstring>eventLoopSpinBox</cstring>
- </property>
- <property name="prefix">
- <string></string>
- </property>
- <property name="suffix">
- <string>s</string>
- </property>
- <property name="buttonSymbols">
- <enum>PlusMinus</enum>
- </property>
- <property name="minValue">
- <number>1</number>
- </property>
- </widget>
- </hbox>
- </widget>
- </hbox>
- </widget>
- </vbox>
- </widget>
- </grid>
- </widget>
- </vbox>
- </widget>
- </grid>
- </widget>
- <widget class="QTabWidget" row="0" column="0">
- <property name="name">
- <cstring>mainTabWidget</cstring>
- </property>
- <property name="font">
- <font>
- <family>FreeSans</family>
- <pointsize>12</pointsize>
- </font>
- </property>
- <property name="autoMask">
- <bool>true</bool>
- </property>
- <widget class="QWidget">
- <property name="name">
- <cstring>Geometry</cstring>
- </property>
- <attribute name="title">
- <string>3D</string>
- </attribute>
- <grid>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <property name="margin">
- <number>0</number>
- </property>
- <property name="spacing">
- <number>0</number>
- </property>
- <widget class="TQtWidget" row="0" column="0">
- <property name="name">
- <cstring>tQtWidget3D</cstring>
- </property>
- </widget>
- </grid>
- </widget>
- <widget class="QWidget">
- <property name="name">
- <cstring>HistResiduals</cstring>
- </property>
- <attribute name="title">
- <string>Residuals</string>
- </attribute>
- <grid>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <property name="margin">
- <number>0</number>
- </property>
- <property name="spacing">
- <number>0</number>
- </property>
- <widget class="TQtWidget" row="0" column="0">
- <property name="name">
- <cstring>tQtWidgetResiduals</cstring>
- </property>
- </widget>
- </grid>
- </widget>
- <widget class="QWidget">
- <property name="name">
- <cstring>HistPadRow</cstring>
- </property>
- <attribute name="title">
- <string>PadRow</string>
- </attribute>
- <grid>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <property name="margin">
- <number>0</number>
- </property>
- <property name="spacing">
- <number>0</number>
- </property>
- <widget class="TQtWidget" row="0" column="0">
- <property name="name">
- <cstring>tQtWidgetPadRow</cstring>
- </property>
- </widget>
- </grid>
- </widget>
- <widget class="QWidget">
- <property name="name">
- <cstring>HistPad</cstring>
- </property>
- <attribute name="title">
- <string>Pad</string>
- </attribute>
- <grid>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <property name="margin">
- <number>0</number>
- </property>
- <property name="spacing">
- <number>0</number>
- </property>
- <widget class="TQtWidget" row="0" column="0">
- <property name="name">
- <cstring>tQtWidgetPad</cstring>
- </property>
- </widget>
- </grid>
- </widget>
- <widget class="QWidget">
- <property name="name">
- <cstring>HistCharge</cstring>
- </property>
- <attribute name="title">
- <string>Charge</string>
- </attribute>
- <grid>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <property name="margin">
- <number>0</number>
- </property>
- <property name="spacing">
- <number>0</number>
- </property>
- <widget class="TQtWidget" row="0" column="0">
- <property name="name">
- <cstring>tQtWidgetCharge</cstring>
- </property>
- </widget>
- </grid>
- </widget>
- <widget class="QWidget">
- <property name="name">
- <cstring>HistFront</cstring>
- </property>
- <attribute name="title">
- <string>Front</string>
- </attribute>
- <grid>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <property name="margin">
- <number>0</number>
- </property>
- <property name="spacing">
- <number>0</number>
- </property>
- <widget class="TQtWidget" row="0" column="0">
- <property name="name">
- <cstring>tQtWidgetFront</cstring>
- </property>
- </widget>
- </grid>
- </widget>
- <widget class="QWidget">
- <property name="name">
- <cstring>HistHits_s</cstring>
- </property>
- <attribute name="title">
- <string>#Hits / s</string>
- </attribute>
- <grid>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <property name="margin">
- <number>0</number>
- </property>
- <property name="spacing">
- <number>0</number>
- </property>
- <widget class="TQtWidget" row="0" column="0">
- <property name="name">
- <cstring>tQtWidgetHits_s</cstring>
- </property>
- </widget>
- </grid>
- </widget>
- <widget class="QWidget">
- <property name="name">
- <cstring>Histq_track</cstring>
- </property>
- <attribute name="title">
- <string><q> / track</string>
- </attribute>
- <grid>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <property name="margin">
- <number>0</number>
- </property>
- <property name="spacing">
- <number>0</number>
- </property>
- <widget class="TQtWidget" row="0" column="0">
- <property name="name">
- <cstring>tQtWidgetq_track</cstring>
- </property>
- </widget>
- </grid>
- </widget>
- <widget class="QWidget">
- <property name="name">
- <cstring>HistQ_s</cstring>
- </property>
- <attribute name="title">
- <string>Q / s</string>
- </attribute>
- <grid>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <property name="margin">
- <number>0</number>
- </property>
- <property name="spacing">
- <number>0</number>
- </property>
- <widget class="TQtWidget" row="0" column="0">
- <property name="name">
- <cstring>tQtWidgetQ_s</cstring>
- </property>
- </widget>
- </grid>
- </widget>
- <widget class="QWidget">
- <property name="name">
- <cstring>HistPadRow_Pad</cstring>
- </property>
- <attribute name="title">
- <string>PadRow / Pad</string>
- </attribute>
- <grid>
- <property name="name">
- <cstring>unnamed</cstring>
- </property>
- <property name="margin">
- <number>0</number>
- </property>
- <property name="spacing">
- <number>0</number>
- </property>
- <widget class="TQtWidget" row="0" column="0">
- <property name="name">
- <cstring>tQtWidgetPadRow_Pad</cstring>
- </property>
- </widget>
- </grid>
- </widget>
- </widget>
- </grid>
- </widget>
- </grid>
-</widget>
-<menubar>
- <property name="name">
- <cstring>qt_dead_widget_MenuBarEditor</cstring>
- </property>
-</menubar>
-<toolbars>
-</toolbars>
-<customwidgets>
- <customwidget>
- <class>TQtWidget</class>
- <header location="local">TQtWidget.h</header>
- <sizehint>
- <width>-1</width>
- <height>-1</height>
- </sizehint>
- <container>0</container>
- <sizepolicy>
- <hordata>5</hordata>
- <verdata>5</verdata>
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- <pixmap>image0</pixmap>
- <signal>CanvasPainted()</signal>
- <signal>Saved(bool)</signal>
- <signal>RootEventProcessed(TObject *object, UInt_t event, TCanvas *RootCanvas)</signal>
- <signal>RootEventProcced(TObject *, UInt_t, TCanvas *)</signal>
- <slot access="public" specifier="">cd(int)</slot>
- <slot access="public" specifier="">Disconnect()</slot>
- <slot access="public" specifier="">cd()</slot>
- <slot access="public" specifier="">Refresh()</slot>
- <slot access="public" specifier="">slot()</slot>
- <slot access="public" specifier="">Save(const char *fileName) const</slot>
- <slot access="public" specifier="">Save(QString&fileName) const</slot>
- <slot access="public" specifier="">Save(QString&fileName, const char*format, int quality) const</slot>
- <slot access="public" specifier="">Save(const char *fileName, const char*format, int quality) const</slot>
- </customwidget>
-</customwidgets>
-<images>
- <image name="image0">
- <data format="XBM.GZ" length="79">789c534e494dcbcc4b554829cdcdad8c2fcf4c29c95030e0524611cd48cd4ccf28010a1797249664262b2467241641a592324b8aa363156c15aab914146aadb90067111b1f</data>
- </image>
-</images>
-<connections>
- <connection>
- <sender>eventLoopPushButton</sender>
- <signal>clicked()</signal>
- <receiver>AliHLTGUIMainForm</receiver>
- <slot>eventLoop()</slot>
- </connection>
- <connection>
- <sender>eventLoopSpinBox</sender>
- <signal>valueChanged(int)</signal>
- <receiver>AliHLTGUIMainForm</receiver>
- <slot>updateEventLoop()</slot>
- </connection>
- <connection>
- <sender>nextEventPushButton</sender>
- <signal>clicked()</signal>
- <receiver>AliHLTGUIMainForm</receiver>
- <slot>nextEvent()</slot>
- </connection>
- <connection>
- <sender>redisplayPushButton</sender>
- <signal>clicked()</signal>
- <receiver>AliHLTGUIMainForm</receiver>
- <slot>redisplayEvent()</slot>
- </connection>
- <connection>
- <sender>padrowSlider</sender>
- <signal>valueChanged(int)</signal>
- <receiver>padrowSpinBox</receiver>
- <slot>setValue(int)</slot>
- </connection>
- <connection>
- <sender>padrowSpinBox</sender>
- <signal>valueChanged(int)</signal>
- <receiver>AliHLTGUIMainForm</receiver>
- <slot>setPadRow()</slot>
- </connection>
- <connection>
- <sender>padrowSpinBox</sender>
- <signal>valueChanged(int)</signal>
- <receiver>padrowSlider</receiver>
- <slot>setValue(int)</slot>
- </connection>
- <connection>
- <sender>padSlider</sender>
- <signal>valueChanged(int)</signal>
- <receiver>padSpinBox</receiver>
- <slot>setValue(int)</slot>
- </connection>
- <connection>
- <sender>padSpinBox</sender>
- <signal>valueChanged(int)</signal>
- <receiver>AliHLTGUIMainForm</receiver>
- <slot>setPad()</slot>
- </connection>
- <connection>
- <sender>padSpinBox</sender>
- <signal>valueChanged(int)</signal>
- <receiver>padSlider</receiver>
- <slot>setValue(int)</slot>
- </connection>
- <connection>
- <sender>padrowSplitCheckBox</sender>
- <signal>toggled(bool)</signal>
- <receiver>AliHLTGUIMainForm</receiver>
- <slot>setSplitPadRow()</slot>
- </connection>
- <connection>
- <sender>rawSectorSpinBox</sender>
- <signal>valueChanged(int)</signal>
- <receiver>AliHLTGUIMainForm</receiver>
- <slot>setRawSlice()</slot>
- </connection>
- <connection>
- <sender>usedClusterRadioButton</sender>
- <signal>toggled(bool)</signal>
- <receiver>AliHLTGUIMainForm</receiver>
- <slot>setCluster()</slot>
- </connection>
- <connection>
- <sender>allClusterRadioButton</sender>
- <signal>toggled(bool)</signal>
- <receiver>AliHLTGUIMainForm</receiver>
- <slot>setCluster()</slot>
- </connection>
- <connection>
- <sender>unusedClusterRadioButton</sender>
- <signal>toggled(bool)</signal>
- <receiver>AliHLTGUIMainForm</receiver>
- <slot>setCluster()</slot>
- </connection>
- <connection>
- <sender>clusterCheckBox</sender>
- <signal>toggled(bool)</signal>
- <receiver>clusterPropButtonGroup</receiver>
- <slot>setEnabled(bool)</slot>
- </connection>
- <connection>
- <sender>selectTrackCheckBox</sender>
- <signal>toggled(bool)</signal>
- <receiver>trackParamGroupBox</receiver>
- <slot>setEnabled(bool)</slot>
- </connection>
- <connection>
- <sender>selectTrackCheckBox</sender>
- <signal>toggled(bool)</signal>
- <receiver>AliHLTGUIMainForm</receiver>
- <slot>setSelectTrack()</slot>
- </connection>
- <connection>
- <sender>selectTrackCheckBox</sender>
- <signal>toggled(bool)</signal>
- <receiver>selectTrackSectorSpinBox</receiver>
- <slot>setEnabled(bool)</slot>
- </connection>
- <connection>
- <sender>selectTrackCheckBox</sender>
- <signal>toggled(bool)</signal>
- <receiver>selectTrackSpinBox</receiver>
- <slot>setEnabled(bool)</slot>
- </connection>
- <connection>
- <sender>selectTrackSectorSpinBox</sender>
- <signal>valueChanged(int)</signal>
- <receiver>AliHLTGUIMainForm</receiver>
- <slot>selectTrackSector()</slot>
- </connection>
- <connection>
- <sender>selectTrackSpinBox</sender>
- <signal>valueChanged(int)</signal>
- <receiver>AliHLTGUIMainForm</receiver>
- <slot>selectTrack()</slot>
- </connection>
- <connection>
- <sender>tracksCheckBox</sender>
- <signal>toggled(bool)</signal>
- <receiver>selectTrackGroupBox</receiver>
- <slot>setEnabled(bool)</slot>
- </connection>
- <connection>
- <sender>cutPsiLineEdit</sender>
- <signal>lostFocus()</signal>
- <receiver>AliHLTGUIMainForm</receiver>
- <slot>setTrack()</slot>
- </connection>
- <connection>
- <sender>cutPtLineEdit</sender>
- <signal>lostFocus()</signal>
- <receiver>AliHLTGUIMainForm</receiver>
- <slot>setTrack()</slot>
- </connection>
- <connection>
- <sender>cutSLineEdit</sender>
- <signal>lostFocus()</signal>
- <receiver>AliHLTGUIMainForm</receiver>
- <slot>setTrack()</slot>
- </connection>
- <connection>
- <sender>cutPadrowLineEdit</sender>
- <signal>lostFocus()</signal>
- <receiver>AliHLTGUIMainForm</receiver>
- <slot>setTrack()</slot>
- </connection>
- <connection>
- <sender>cutHitsSpinBox</sender>
- <signal>valueChanged(int)</signal>
- <receiver>AliHLTGUIMainForm</receiver>
- <slot>setTrack()</slot>
- </connection>
- <connection>
- <sender>cutLambdaLineEdit</sender>
- <signal>lostFocus()</signal>
- <receiver>AliHLTGUIMainForm</receiver>
- <slot>setTrack()</slot>
- </connection>
- <connection>
- <sender>tracksCheckBox</sender>
- <signal>toggled(bool)</signal>
- <receiver>trackPropGroupBox</receiver>
- <slot>setEnabled(bool)</slot>
- </connection>
- <connection>
- <sender>savePushButton</sender>
- <signal>clicked()</signal>
- <receiver>AliHLTGUIMainForm</receiver>
- <slot>saveHistograms()</slot>
- </connection>
- <connection>
- <sender>rawOnePadRowRadioButton</sender>
- <signal>toggled(bool)</signal>
- <receiver>AliHLTGUIMainForm</receiver>
- <slot>set3DRaw()</slot>
- </connection>
- <connection>
- <sender>rawAllPadRowRadioButton</sender>
- <signal>toggled(bool)</signal>
- <receiver>AliHLTGUIMainForm</receiver>
- <slot>set3DRaw()</slot>
- </connection>
- <connection>
- <sender>geometryCheckBox</sender>
- <signal>toggled(bool)</signal>
- <receiver>AliHLTGUIMainForm</receiver>
- <slot>set3D()</slot>
- </connection>
- <connection>
- <sender>padrowCheckBox</sender>
- <signal>toggled(bool)</signal>
- <receiver>AliHLTGUIMainForm</receiver>
- <slot>set3D()</slot>
- </connection>
- <connection>
- <sender>keepViewCheckBox</sender>
- <signal>toggled(bool)</signal>
- <receiver>AliHLTGUIMainForm</receiver>
- <slot>setKeepView()</slot>
- </connection>
- <connection>
- <sender>tracksCheckBox</sender>
- <signal>toggled(bool)</signal>
- <receiver>AliHLTGUIMainForm</receiver>
- <slot>set3D()</slot>
- </connection>
- <connection>
- <sender>clusterCheckBox</sender>
- <signal>toggled(bool)</signal>
- <receiver>AliHLTGUIMainForm</receiver>
- <slot>set3D()</slot>
- </connection>
- <connection>
- <sender>invertCheckBox</sender>
- <signal>toggled(bool)</signal>
- <receiver>AliHLTGUIMainForm</receiver>
- <slot>setInvert()</slot>
- </connection>
- <connection>
- <sender>oneRadioButton</sender>
- <signal>toggled(bool)</signal>
- <receiver>AliHLTGUIMainForm</receiver>
- <slot>setSector()</slot>
- </connection>
- <connection>
- <sender>oneRadioButton</sender>
- <signal>toggled(bool)</signal>
- <receiver>oneSpinBox</receiver>
- <slot>setEnabled(bool)</slot>
- </connection>
- <connection>
- <sender>pairRadioButton</sender>
- <signal>toggled(bool)</signal>
- <receiver>pairSpinBox</receiver>
- <slot>setEnabled(bool)</slot>
- </connection>
- <connection>
- <sender>pairSpinBox</sender>
- <signal>valueChanged(int)</signal>
- <receiver>AliHLTGUIMainForm</receiver>
- <slot>setSector()</slot>
- </connection>
- <connection>
- <sender>pairRangeMaxSpinBox</sender>
- <signal>valueChanged(int)</signal>
- <receiver>AliHLTGUIMainForm</receiver>
- <slot>setSector()</slot>
- </connection>
- <connection>
- <sender>pairRangeRadioButton</sender>
- <signal>toggled(bool)</signal>
- <receiver>pairRangeMaxSpinBox</receiver>
- <slot>setEnabled(bool)</slot>
- </connection>
- <connection>
- <sender>pairRadioButton</sender>
- <signal>toggled(bool)</signal>
- <receiver>AliHLTGUIMainForm</receiver>
- <slot>setSector()</slot>
- </connection>
- <connection>
- <sender>pairRangeRadioButton</sender>
- <signal>toggled(bool)</signal>
- <receiver>AliHLTGUIMainForm</receiver>
- <slot>setSector()</slot>
- </connection>
- <connection>
- <sender>pairRangeRadioButton</sender>
- <signal>toggled(bool)</signal>
- <receiver>pairRangeMinSpinBox</receiver>
- <slot>setEnabled(bool)</slot>
- </connection>
- <connection>
- <sender>pairRangeRadioButton</sender>
- <signal>toggled(bool)</signal>
- <receiver>textLabel1_2</receiver>
- <slot>setEnabled(bool)</slot>
- </connection>
- <connection>
- <sender>rangeRadioButton</sender>
- <signal>toggled(bool)</signal>
- <receiver>textLabel1</receiver>
- <slot>setEnabled(bool)</slot>
- </connection>
- <connection>
- <sender>rangeMinSpinBox</sender>
- <signal>valueChanged(int)</signal>
- <receiver>AliHLTGUIMainForm</receiver>
- <slot>setSector()</slot>
- </connection>
- <connection>
- <sender>rangeRadioButton</sender>
- <signal>toggled(bool)</signal>
- <receiver>rangeMinSpinBox</receiver>
- <slot>setEnabled(bool)</slot>
- </connection>
- <connection>
- <sender>rangeRadioButton</sender>
- <signal>toggled(bool)</signal>
- <receiver>AliHLTGUIMainForm</receiver>
- <slot>setSector()</slot>
- </connection>
- <connection>
- <sender>rangeRadioButton</sender>
- <signal>toggled(bool)</signal>
- <receiver>rangeMaxSpinBox</receiver>
- <slot>setEnabled(bool)</slot>
- </connection>
- <connection>
- <sender>allRadioButton</sender>
- <signal>toggled(bool)</signal>
- <receiver>AliHLTGUIMainForm</receiver>
- <slot>setSector()</slot>
- </connection>
- <connection>
- <sender>oneSpinBox</sender>
- <signal>valueChanged(int)</signal>
- <receiver>AliHLTGUIMainForm</receiver>
- <slot>setSector()</slot>
- </connection>
- <connection>
- <sender>pairRangeMinSpinBox</sender>
- <signal>valueChanged(int)</signal>
- <receiver>AliHLTGUIMainForm</receiver>
- <slot>setSector()</slot>
- </connection>
- <connection>
- <sender>rangeMaxSpinBox</sender>
- <signal>valueChanged(int)</signal>
- <receiver>AliHLTGUIMainForm</receiver>
- <slot>setSector()</slot>
- </connection>
- <connection>
- <sender>removePushButton</sender>
- <signal>clicked()</signal>
- <receiver>AliHLTGUIMainForm</receiver>
- <slot>removeHost()</slot>
- </connection>
- <connection>
- <sender>addPushButton</sender>
- <signal>clicked()</signal>
- <receiver>AliHLTGUIMainForm</receiver>
- <slot>addHost()</slot>
- </connection>
- <connection>
- <sender>connectPushButton</sender>
- <signal>clicked()</signal>
- <receiver>AliHLTGUIMainForm</receiver>
- <slot>connectDisplay()</slot>
- </connection>
- <connection>
- <sender>frontAverageRadioButton</sender>
- <signal>toggled(bool)</signal>
- <receiver>AliHLTGUIMainForm</receiver>
- <slot>selectTimeBinData()</slot>
- </connection>
- <connection>
- <sender>frontSumRadioButton</sender>
- <signal>toggled(bool)</signal>
- <receiver>AliHLTGUIMainForm</receiver>
- <slot>selectTimeBinData()</slot>
- </connection>
- <connection>
- <sender>frontMaxRadioButton</sender>
- <signal>toggled(bool)</signal>
- <receiver>AliHLTGUIMainForm</receiver>
- <slot>selectTimeBinData()</slot>
- </connection>
- <connection>
- <sender>frontAllRadioButton</sender>
- <signal>toggled(bool)</signal>
- <receiver>AliHLTGUIMainForm</receiver>
- <slot>setTimeBin()</slot>
- </connection>
- <connection>
- <sender>frontRangeRadioButton</sender>
- <signal>toggled(bool)</signal>
- <receiver>AliHLTGUIMainForm</receiver>
- <slot>setTimeBin()</slot>
- </connection>
- <connection>
- <sender>frontOneRadioButton</sender>
- <signal>toggled(bool)</signal>
- <receiver>AliHLTGUIMainForm</receiver>
- <slot>setTimeBin()</slot>
- </connection>
- <connection>
- <sender>oneTimeBinSpinBox</sender>
- <signal>valueChanged(int)</signal>
- <receiver>oneTimeBinSlider</receiver>
- <slot>setValue(int)</slot>
- </connection>
- <connection>
- <sender>oneTimeBinSlider</sender>
- <signal>valueChanged(int)</signal>
- <receiver>oneTimeBinSpinBox</receiver>
- <slot>setValue(int)</slot>
- </connection>
- <connection>
- <sender>minTimeBinSlider</sender>
- <signal>valueChanged(int)</signal>
- <receiver>minTimeBinSpinBox</receiver>
- <slot>setValue(int)</slot>
- </connection>
- <connection>
- <sender>minTimeBinSpinBox</sender>
- <signal>valueChanged(int)</signal>
- <receiver>minTimeBinSlider</receiver>
- <slot>setValue(int)</slot>
- </connection>
- <connection>
- <sender>maxTimeBinSpinBox</sender>
- <signal>valueChanged(int)</signal>
- <receiver>maxTimeBinSlider</receiver>
- <slot>setValue(int)</slot>
- </connection>
- <connection>
- <sender>maxTimeBinSlider</sender>
- <signal>valueChanged(int)</signal>
- <receiver>maxTimeBinSpinBox</receiver>
- <slot>setValue(int)</slot>
- </connection>
- <connection>
- <sender>frontOneRadioButton</sender>
- <signal>toggled(bool)</signal>
- <receiver>textLabel1_9_2</receiver>
- <slot>setEnabled(bool)</slot>
- </connection>
- <connection>
- <sender>frontOneRadioButton</sender>
- <signal>toggled(bool)</signal>
- <receiver>oneTimeBinSlider</receiver>
- <slot>setEnabled(bool)</slot>
- </connection>
- <connection>
- <sender>frontOneRadioButton</sender>
- <signal>toggled(bool)</signal>
- <receiver>oneTimeBinSpinBox</receiver>
- <slot>setEnabled(bool)</slot>
- </connection>
- <connection>
- <sender>frontRangeRadioButton</sender>
- <signal>toggled(bool)</signal>
- <receiver>textLabel1_9_2_2</receiver>
- <slot>setEnabled(bool)</slot>
- </connection>
- <connection>
- <sender>frontRangeRadioButton</sender>
- <signal>toggled(bool)</signal>
- <receiver>textLabel1_9_2_3</receiver>
- <slot>setEnabled(bool)</slot>
- </connection>
- <connection>
- <sender>frontRangeRadioButton</sender>
- <signal>toggled(bool)</signal>
- <receiver>minTimeBinSlider</receiver>
- <slot>setEnabled(bool)</slot>
- </connection>
- <connection>
- <sender>frontRangeRadioButton</sender>
- <signal>toggled(bool)</signal>
- <receiver>maxTimeBinSlider</receiver>
- <slot>setEnabled(bool)</slot>
- </connection>
- <connection>
- <sender>frontRangeRadioButton</sender>
- <signal>toggled(bool)</signal>
- <receiver>minTimeBinSpinBox</receiver>
- <slot>setEnabled(bool)</slot>
- </connection>
- <connection>
- <sender>frontRangeRadioButton</sender>
- <signal>toggled(bool)</signal>
- <receiver>maxTimeBinSpinBox</receiver>
- <slot>setEnabled(bool)</slot>
- </connection>
- <connection>
- <sender>oneTimeBinSpinBox</sender>
- <signal>valueChanged(int)</signal>
- <receiver>AliHLTGUIMainForm</receiver>
- <slot>setTimeBin()</slot>
- </connection>
- <connection>
- <sender>minTimeBinSpinBox</sender>
- <signal>valueChanged(int)</signal>
- <receiver>AliHLTGUIMainForm</receiver>
- <slot>setTimeBin()</slot>
- </connection>
- <connection>
- <sender>maxTimeBinSpinBox</sender>
- <signal>valueChanged(int)</signal>
- <receiver>AliHLTGUIMainForm</receiver>
- <slot>setTimeBin()</slot>
- </connection>
- <connection>
- <sender>frontSplitCheckBox</sender>
- <signal>toggled(bool)</signal>
- <receiver>AliHLTGUIMainForm</receiver>
- <slot>setSplitFront()</slot>
- </connection>
- <connection>
- <sender>rawZeroCheckBox</sender>
- <signal>toggled(bool)</signal>
- <receiver>AliHLTGUIMainForm</receiver>
- <slot>setZeroSuppression()</slot>
- </connection>
-</connections>
-<tabstops>
- <tabstop>hostnameLineEdit</tabstop>
- <tabstop>portSpinBox</tabstop>
- <tabstop>addPushButton</tabstop>
- <tabstop>connectPushButton</tabstop>
- <tabstop>hostListView</tabstop>
- <tabstop>removePushButton</tabstop>
- <tabstop>nextEventPushButton</tabstop>
- <tabstop>redisplayPushButton</tabstop>
- <tabstop>clusterCheckBox</tabstop>
- <tabstop>tracksCheckBox</tabstop>
- <tabstop>padrowCheckBox</tabstop>
- <tabstop>geometryCheckBox</tabstop>
- <tabstop>allRadioButton</tabstop>
- <tabstop>oneSpinBox</tabstop>
- <tabstop>rangeMinSpinBox</tabstop>
- <tabstop>rangeMaxSpinBox</tabstop>
- <tabstop>pairSpinBox</tabstop>
- <tabstop>pairRangeMinSpinBox</tabstop>
- <tabstop>pairRangeMaxSpinBox</tabstop>
- <tabstop>mainTabWidget</tabstop>
- <tabstop>cutPtLineEdit</tabstop>
- <tabstop>cutHitsSpinBox</tabstop>
-</tabstops>
-<slots>
- <slot>connectDisplay()</slot>
- <slot>addHost()</slot>
- <slot>removeHost()</slot>
- <slot>nextEvent()</slot>
- <slot>redisplayEvent()</slot>
- <slot>setSector()</slot>
- <slot>setPadRow()</slot>
- <slot>setPad()</slot>
- <slot>set3D()</slot>
- <slot>setTrack()</slot>
- <slot>setCluster()</slot>
- <slot>setInvert()</slot>
- <slot>setSelectTrack()</slot>
- <slot>selectTrackSector()</slot>
- <slot>selectTrack()</slot>
- <slot>setKeepView()</slot>
- <slot>eventLoop()</slot>
- <slot>saveHistograms()</slot>
- <slot>setSplitPadRow()</slot>
- <slot>setRawSlice()</slot>
- <slot>updateEventLoop()</slot>
- <slot>setSplitFront()</slot>
- <slot>selectTimeBinData()</slot>
- <slot>setTimeBin()</slot>
- <slot>set3DRaw()</slot>
- <slot>setZeroSuppression()</slot>
-</slots>
-<pixmapinproject/>
-<layoutdefaults spacing="6" margin="11"/>
-<includehints>
- <includehint>tqtwidget.h</includehint>
- <includehint>tqtwidget.h</includehint>
- <includehint>tqtwidget.h</includehint>
- <includehint>tqtwidget.h</includehint>
- <includehint>tqtwidget.h</includehint>
- <includehint>tqtwidget.h</includehint>
- <includehint>tqtwidget.h</includehint>
- <includehint>tqtwidget.h</includehint>
- <includehint>tqtwidget.h</includehint>
- <includehint>tqtwidget.h</includehint>
-</includehints>
-</UI>
+++ /dev/null
-LIBS += @HOMER_LDFLAGS@ @HOMER_LIBS@
-
-INCLUDEPATH += @ROOTINCDIR@ @ALIHLT_INCDIRS@ @HOMER_INCDIRS@
-
-#HEADERS += @top_srcdir@/src/AliHLTGUI.h
-
-#SOURCES += @top_srcdir@/src/main.cxx \
-# @top_srcdir@/src/AliHLTGUI.cxx
-
-#FORMS = @top_srcdir@/src/AliHLTGUIMainForm.ui
-
-#IMAGES = @top_srcdir@/images/AliceLogo.gif \
-# @top_srcdir@/images/KIPLogo.gif
-
-ALIROOT_LDFLAGS = @ALIROOT_LDFLAGS@
-ALIROOT_LIBS = @ALIROOT_LIBS@
-ALIHLT_LIBS = @ALIHLT_LIBS@
-ALIHLT_LDFLAGS = @ALIHLT_LDFLAGS@
-ROOTINCDIR = @ROOTINCDIR@
-ROOTLIBDIR = @ROOTLIBDIR@
+++ /dev/null
-/************************************************************************
-**
-** This file is property of and copyright by the Computer Science/Computer
-** Engineering Group, Kirchhoff Institute for Physics, Ruprecht-Karls-
-** University, Heidelberg, Germany, 2005
-** This file has been written by Jochen Thaeder,
-** thaeder@kip.uni-heidelberg.de
-**
-**
-** See the file license.txt for details regarding usage, modification,
-** distribution and warranty.
-** Important: This file is provided without any warranty, including
-** fitness for any particular purpose.
-**
-**
-** Newer versions of this file's package will be made available from
-** http://www.kip.uni-heidelberg.de/ti/HLT/
-** or the corresponding page of the Heidelberg Alice HLT group.
-**
-*************************************************************************/
-
-#include <qapplication.h>
-#include "AliHLTGUI.h"
-
-int main( int argc, char ** argv ) {
- QApplication qApp( argc, argv );
- AliHLTGUI gui( argc, argv );
- gui.show();
- qApp.connect( &qApp, SIGNAL( lastWindowClosed() ), &qApp, SLOT( quit() ) );
- return qApp.exec();
-}
+++ /dev/null
-#!/bin/bash
-# start script for the AliHLTGUI
-# the LD_LIBRARY_PATH variable is set according to the package configuration
-# before the GUI is started
-file=$0
-[ -h $file ] && file=`readlink $file`
-dir=`dirname $file`
-
-export ROOTSYS=@ROOTSYS@
-ADD_LIBDIR=`echo '@QT_LIBS@' | sed -e "s| |\n|g" | sed -e "/^-L/!d" | sed -e "s|^-L||"`
-ADD_LIBDIR="$ADD_LIBDIR @ROOTLIBDIR@"
-ADD_LIBDIR="$ADD_LIBDIR @ALIROOTLIBDIR@"
-ADD_LIBDIR="$ADD_LIBDIR @ALIHLT_LIBDIR@"
-ADD_LIBDIR="$ADD_LIBDIR @HOMER_LIBDIR@"
-for i in $ADD_LIBDIR ; do export LD_LIBRARY_PATH="$i:$LD_LIBRARY_PATH"; done
-
-$dir/AliHLTGUI
AC_CONFIG_FILES([TPCLib/Makefile
TPCLib/test/Makefile
TPCLib/mapping2array.cxx
- TPCLib/OnlineDisplay/Makefile
TPCLib/EVE/Makefile
])
fi