Revision 5e089c2e460422be13f2c4a1cfea982de3fd84bf authored by Wouter Verkerke on 22 August 2008, 13:08:54 UTC, committed by Wouter Verkerke on 22 August 2008, 13:08:54 UTC
  o RooMathCoreReg

    - Relist ROOT::Math::gamma_quantile(double, double, double)
      and ROOT::Math::chi2_quantile(double, double, double)
      now that corresponding functions have been re-enabled
      in MathCore (lorenzo r25195)


git-svn-id: http://root.cern.ch/svn/root/trunk@25210 27541ba8-7e3a-0410-8455-c3a389f83636
1 parent f90a43e
Raw File
quad_test.C
// @(#)root/eve:$Id$
// Author: Matevz Tadel

TEveQuadSet* quad_test(Float_t x=0, Float_t y=0, Float_t z=0,
                       Int_t num=100, Bool_t register=kTRUE)
{
   TEveManager::Create();

   TRandom r(0);
   gStyle->SetPalette(1, 0);

   TEveRGBAPalette *pal = new TEveRGBAPalette(0, 130);
   TEveFrameBox    *box = new TEveFrameBox();
   box->SetAAQuadXY(-10, -10, 0, 20, 20);
   box->SetFrameColor(kGray);

   TEveQuadSet* q = new TEveQuadSet("RectangleXY");
   q->SetOwnIds(kTRUE);
   q->SetPalette(pal);
   q->SetFrame(box);
   q->Reset(TEveQuadSet::kQT_RectangleXY, kFALSE, 32);
   for (Int_t i=0; i<num; ++i) {
      q->AddQuad(r.Uniform(-10, 9), r.Uniform(-10, 9), 0,
                 r.Uniform(0.2, 1), r.Uniform(0.2, 1));
      q->QuadValue(r.Uniform(0, 130));
      q->QuadId(new TNamed(Form("QuadIdx %d", i), "TNamed assigned to a quad as an indentifier."));
   }
   q->RefitPlex();

   TEveTrans& t = q->RefMainTrans();
   t.RotateLF(1, 3, 0.5*TMath::Pi());
   t.SetPos(x, y, z);

   if (register)
   {
      gEve->AddElement(q);
      gEve->Redraw3D(kTRUE);
   }

   Info("quad_test", "use alt-left-mouse to select individual digits.");

   return q;
}

TEveQuadSet* quad_test_emc(Float_t x=0, Float_t y=0, Float_t z=0,
                                Int_t num=100)
{
   TEveManager::Create();

   TRandom r(0);
   gStyle->SetPalette(1, 0);

   TEveQuadSet* q = new TEveQuadSet("EMC Supermodule");
   q->SetOwnIds(kTRUE);
   q->Reset(TEveQuadSet::kQT_RectangleXZFixedDimY, kFALSE, 32);
   q->SetDefWidth(8);
   q->SetDefHeight(8);

   for (Int_t i=0; i<num; ++i) {
      q->AddQuad(r.Uniform(-100, 100), r.Uniform(-100, 100));
      q->QuadValue(r.Uniform(0, 130));
      q->QuadId(new TNamed(Form("Cell %d", i), "Dong!"));
   }
   q->RefitPlex();

   TEveTrans& t = q->RefMainTrans();
   t.SetPos(x, y, z);

   gEve->AddElement(q);
   gEve->Redraw3D();

   return q;
}

TEveQuadSet* quad_test_circ()
{
   TEveManager::Create();

   TRandom rnd(0);
   gStyle->SetPalette(1, 0);

   Float_t R = 10, dW = 1, dH = .5;

   TEveFrameBox *box = new TEveFrameBox();
   {
      Float_t  frame[3*36];
      Float_t *p = frame;
      for (Int_t i = 0; i < 36; ++i, p += 3) {
         p[0] = 11 * TMath::Cos(TMath::TwoPi()*i/36);
         p[1] = 11 * TMath::Sin(TMath::TwoPi()*i/36);
         p[2] = 0;
      }
      box->SetQuadByPoints(frame, 36);
   }
   box->SetFrameColor(kGray);

   TEveQuadSet* q = new TEveQuadSet("Pepe");
   q->SetFrame(box);
   q->Reset(TEveQuadSet::kQT_HexagonXY, kFALSE, 32);

   for (Float_t r = R; r > 2; r *= 0.8)
   {
      Int_t maxI = 2.0*TMath::Pi()*r / 2;
      for (Int_t i = 0; i < maxI; ++i)
      {
         Float_t x = r * TMath::Cos(TMath::TwoPi()*i/maxI);
         Float_t y = r * TMath::Sin(TMath::TwoPi()*i/maxI);
         q->AddHexagon(x, y, rnd.Uniform(-1, 1), rnd.Uniform(0.2, 1));
         q->QuadValue(rnd.Uniform(0, 130));
      }
   }
   q->RefitPlex();

   TEveTrans& t = q->RefMainTrans();
   t.RotateLF(1, 3, 0.5*TMath::Pi());

   gEve->AddElement(q);
   gEve->Redraw3D();

   return q;
}

TEveQuadSet* quad_test_hex(Float_t x=0, Float_t y=0, Float_t z=0,
                                Int_t num=100, Bool_t register=kTRUE)
{
   TEveManager::Create();

   TRandom r(0);
   gStyle->SetPalette(1, 0);

   {
      TEveQuadSet* q = new TEveQuadSet("HexagonXY");
      q->Reset(TEveQuadSet::kQT_HexagonXY, kFALSE, 32);
      for (Int_t i=0; i<num; ++i) {
         q->AddHexagon(r.Uniform(-10, 10), r.Uniform(-10, 10), r.Uniform(-10, 10),
                       r.Uniform(0.2, 1));
         q->QuadValue(r.Uniform(0, 120));
      }
      q->RefitPlex();

      TEveTrans& t = q->RefMainTrans();
      t.SetPos(x, y, z);

      if (register)
      {
         gEve->AddElement(q);
         gEve->Redraw3D();
      }
   }

   {
      TEveQuadSet* q = new TEveQuadSet("HexagonYX");
      q->Reset(TEveQuadSet::kQT_HexagonYX, kFALSE, 32);
      for (Int_t i=0; i<num; ++i) {
         q->AddHexagon(r.Uniform(-10, 10), r.Uniform(-10, 10), r.Uniform(-10, 10),
                       r.Uniform(0.2, 1));
         q->QuadValue(r.Uniform(0, 120));
      }
      q->RefitPlex();

      TEveTrans& t = q->RefMainTrans();
      t.SetPos(x, y, z);

      if (register)
      {
         gEve->AddElement(q);
         gEve->Redraw3D();
      }
   }

   return q;
}

TEveQuadSet* quad_test_hexid(Float_t x=0, Float_t y=0, Float_t z=0,
                                  Int_t num=100, Bool_t register=kTRUE)
{
   TEveManager::Create();

   TRandom r(0);
   gStyle->SetPalette(1, 0);

   {
      TEveQuadSet* q = new TEveQuadSet("HexagonXY");
      q->SetOwnIds(kTRUE);
      q->Reset(TEveQuadSet::kQT_HexagonXY, kFALSE, 32);
      for (Int_t i=0; i<num; ++i) {
         q->AddHexagon(r.Uniform(-10, 10), r.Uniform(-10, 10), r.Uniform(-10, 10),
                       r.Uniform(0.2, 1));
         q->QuadValue(r.Uniform(0, 120));
         q->QuadId(new TNamed(Form("Quad with idx=%d", i), "This title is not confusing."));
      }
      q->RefitPlex();

      TEveTrans& t = q->RefMainTrans();
      t.SetPos(x, y, z);

      if (register)
      {
         gEve->AddElement(q);
         gEve->Redraw3D();
      }
   }

   // This show another way of getting notified about
   // secondary selection hit. The callback function and the
   // setting of it must be done in compiled code.
   gROOT->ProcessLine(".L quad_test_callback.cxx+");
   quad_test_set_callback(q);

   return q;
}

void quad_test_hierarchy(Int_t n=4)
{
   TEveManager::Create();

   gStyle->SetPalette(1, 0);

   TEveRGBAPalette* pal = new TEveRGBAPalette(20, 100);
   pal->SetLimits(0, 120);

   TEveFrameBox* box = new TEveFrameBox();
   box->SetAABox(-10, -10, -10, 20, 20, 20);
   box->SetFrameColor(33);

   TEveElementList* l = new TEveElementList("Parent/Dir");
   l->SetTitle("Tooltip");
   //  l->SetMainColor(3);
   gEve->AddElement(l);

   for (Int_t i=0; i<n; ++i)
   {
      TEveQuadSet* qs = quad_test_hexid(0, 0, 50*i, 50, kFALSE);
      qs->SetPalette(pal);
      qs->SetFrame(box);
      gEve->AddElement(qs, l);
   }

   gEve->Redraw3D();
}
back to top