From Cesar: make selection and two-selection working with the new
authormtadel <mtadel@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 2 Mar 2009 10:29:56 +0000 (10:29 +0000)
committermtadel <mtadel@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 2 Mar 2009 10:29:56 +0000 (10:29 +0000)
arrow implementation.

EVE/EveBase/AliEveJetPlane.cxx
EVE/EveBase/AliEveJetPlane.h
EVE/EveBase/AliEveJetPlaneGL.cxx
EVE/EveBase/AliEveJetPlaneGL.h

index a742fca..1434fa8 100644 (file)
@@ -27,7 +27,7 @@
 //
 // Show jets and tracks in eta-phi plane.
 //
-// 
+//
 
 ClassImp(AliEveJetPlane)
 
@@ -89,10 +89,10 @@ AliEveJetPlane::~AliEveJetPlane()
 
 /******************************************************************************/
 
-void AliEveJetPlane::AddJet(AliAODJet* jet) 
+void AliEveJetPlane::AddJet(AliAODJet* jet)
 {
   // Add a jet for display.
-  
+
   fJets.push_back(*jet);
 }
 
@@ -147,17 +147,17 @@ void AliEveJetPlane::CreateArrows()
       phi = j->Phi();
       e   = j->E();
       h   = TMath::Log(e + 1.) * fEnergyScale;
-       
+
       x = eta*(fEtaScale);
       y = phi*(fPhiScale) - 350;
-      
+
       Int_t colBin = TMath::Min((Int_t) ((nCol-2)*TMath::Log(e + 1.)*TMath::Power(10., fEnergyColorScale)/(TMath::Log(eMax + 1.))),nCol-2);
       Int_t colIdx = gStyle->GetColorPalette(colBin);
-       
+
       TEveArrow *a = new TEveArrow(0, 0 , h, x, y, 0);
       a->SetSourceObject(&*j);
       a->SetElementName (Form("Jet %d", jetid));
-      a->SetElementTitle(Form("Jet 4-momentum: %f, %f, %f, %f \n Pt-Eta-Phi values: %f, %f, %f",  
+      a->SetElementTitle(Form("Jet 4-momentum: %f, %f, %f, %f \n Pt-Eta-Phi values: %f, %f, %f",
                               j->Px(), j->Py(), j->Pz(), e, j->Pt(), eta, phi ));
       a->SetPickable(kTRUE);
       a->SetMainColor(colIdx);
@@ -173,14 +173,14 @@ void AliEveJetPlane::CreateArrows()
   if (fRnrTracks)
   {
     UInt_t trackid = 0;
-    std::vector<AliAODTrack>::iterator k = fTracks.begin();  
+    std::vector<AliAODTrack>::iterator k = fTracks.begin();
     while (k != fTracks.end())
     {
       eta = k->Eta();
       phi = k->Phi();
       e   = k->E();
       h   = TMath::Log(e + 1.) * fEnergyScale;
-      
+
       if (e < 0)
       {
         Warning("CreateArrows()",
@@ -191,14 +191,14 @@ void AliEveJetPlane::CreateArrows()
 
       x = eta*(fEtaScale);
       y = phi*(fPhiScale) - 350;
-      
+
       Int_t colBin = TMath::Min((Int_t) ((nCol-2)*TMath::Log(e + 1.)*TMath::Power(10., fEnergyColorScale)/(TMath::Log(eMax + 1.))),nCol-2);
       Int_t colIdx = gStyle->GetColorPalette(colBin);
-       
+
       TEveArrow *a = new TEveArrow(0, 0 , h, x, y, 0);
       a->SetSourceObject(&*k);
       a->SetElementName (Form("Track %d", trackid));
-      a->SetElementTitle(Form("Jet 4-momentum: %f, %f, %f, %f \n Pt-Eta-Phi values: %f, %f, %f",  
+      a->SetElementTitle(Form("Track 4-momentum: %f, %f, %f, %f \n Pt-Eta-Phi values: %f, %f, %f",
                               k->Px(), k->Py(), k->Pz(), e, k->Pt(), eta, phi ));
       a->SetPickable(kTRUE);
       a->SetMainColor(colIdx);
@@ -221,20 +221,7 @@ void AliEveJetPlane::CreateArrows()
 
 /******************************************************************************/
 
-// Double_t AliEveJetPlane::EtaPhiDistance(AliVParticle *particle1, AliVParticle *particle2)
-// {
-// 
-//     Double_t eta1, eta2, phi1, phi2, d;
-// 
-//     eta1 = particle1.Eta();
-//     eta2 = particle2.Eta();
-//     phi1 = particle1.Phi();
-//         phi2 = particle2.Phi();
-// 
-//     d = TMath::Sqrt(TMath::Power(eta2-eta1,2) + TMath::Power(phi2-phi1,2));
-// 
-//     return d;
-// }
+
 
 
 /******************************************************************************/
@@ -243,37 +230,68 @@ void AliEveJetPlane::SelectionAdded(TEveElement* el)
 {
   // Slot called when EVE selection gets a new element.
 
-  if (HasChild(el))
+
+  if (fOneSelection)
   {
-    printf("Now selected %s\n", el->GetElementName());
+    if (HasChild(el))
+    {
+      printf("\n\nNOW SELECTED: %s\n", el->GetElementName());
+
+      TObject *src = el->GetSourceObject();
 
-    TObject *src = el->GetSourceObject();
+      AliAODTrack *k = dynamic_cast<AliAODTrack*>(src);
+      AliAODJet   *j = dynamic_cast<AliAODJet*>  (src);
 
-    AliAODTrack *t = dynamic_cast<AliAODTrack*>(src);
-    AliAODJet   *j = dynamic_cast<AliAODJet*>  (src);
+      //               printf ("Track %p --- Jet %p\n", (void*)t, (void*)j);
+      if (k) printf("Track 4-momentum: %f, %f, %f, %f \nPt-Eta-Phi values: %f, %f, %f \n",
+                    k->Px(), k->Py(), k->Pz(), k->E(), k->Pt(), k->Eta(), k->Phi() );
 
-    printf ("Track %p --- Jet %p\n", (void*)t, (void*)j);
-    if (t) t->Print();
-    if (j) j->Print("");
+      if (j) printf("Jet 4-momentum: %f, %f, %f, %f \nPt-Eta-Phi values: %f, %f, %f \n",
+                    j->Px(), j->Py(), j->Pz(), j->E(), j->Pt(), j->Eta(), j->Phi() );
+    }
   }
 
   TEveSelection *sel = gEve->GetSelection();
-  printf("ALL SELECTED: %d\n", sel->NumChildren());
-  for (List_i i = sel->BeginChildren(); i != sel->EndChildren(); ++i)
+  if (fTwoSelection && sel->NumChildren() == 2)
   {
-    if (HasChild(*i))
+    Int_t          numvps   = 0;
+    AliVParticle  *vpart[2] = { 0 };
+    TEveElement   *elmnt[2] = { 0 };
+
+    for (List_i i = sel->BeginChildren(); i != sel->EndChildren(); ++i)
     {
-      TEveElement *chld = *i;
-      printf("  Foo %s\n", chld->GetElementName());
+      if (HasChild(*i))
+      {
+        TEveElement  *chld = *i;
+        TObject      *src  = chld->GetSourceObject();
+       AliVParticle *p    = dynamic_cast<AliVParticle*>(src);
+
+        if (p != 0)
+        {
+          vpart[numvps] = p;
+          elmnt[numvps] = chld;
+          ++numvps;
+          if (numvps >= 2)
+            break;
+        }
+      }
+    }
 
-      TObject *src = chld->GetSourceObject();
-      AliAODTrack *t = dynamic_cast<AliAODTrack*>(src);
-      AliAODJet   *j = dynamic_cast<AliAODJet*>  (src);
+    Double_t eta0, eta1, phi0, phi1, d;
 
-      printf ("  Track %p --- Jet %p\n", (void*)t, (void*)j);
+    if (numvps == 2)
+    {
+      eta0 = vpart[0]->Eta();
+      eta1 = vpart[1]->Eta();
+      phi0 = vpart[0]->Phi();
+      phi1 = vpart[1]->Phi();
+
+      d = TMath::Sqrt(TMath::Power(eta1-eta0,2) + TMath::Power(phi1-phi0,2));
+      printf("\n\nNOW SELECTED: '%s' and '%s'\n",
+             elmnt[0]->GetElementName(), elmnt[1]->GetElementName());
+      printf("Eta-Phi Distance: %f\n", d);
     }
   }
-  printf("\n");
 }
 
 /******************************************************************************/
index 2776467..f77359e 100644 (file)
@@ -21,7 +21,7 @@
 #include <vector>
 
 //==============================================================================
-// 
+//
 // AliEveJetPlane
 //
 // Class for display of jets and tracks in eta-phi plane.
index 06f2509..f1d3a17 100644 (file)
@@ -126,230 +126,4 @@ void AliEveJetPlaneGL::DirectDraw(TGLRnrCtx& rnrCtx) const
     }
 
   }
-
-//   // Finding the maximum energy
-// 
-//   std::vector<AliAODTrack>::iterator k = fM->fTracks.begin();
-//   std::vector<AliAODJet>::iterator   j = fM->fJets.begin();
-// 
-//   Double_t eJetMax = 0., eTrackMax = 0., eMax;
-// 
-//   Double_t eta, phi, e, x, y;
-//
-//   while (j != fM->fJets.end())
-//   {
-//     if (j->E() > eJetMax) eJetMax = j->E();
-//     ++j;
-//   }
-// 
-//   while (k != fM->fTracks.end())
-//   {
-//     if (k->E() > eTrackMax) eTrackMax = k->E();
-//     ++k;
-//   }
-// 
-//   eMax = eJetMax > eTrackMax ? eJetMax : eTrackMax;
-// 
-//   // Rendering Jets and Tracks in the Eta-Phi plane
-// 
-//   Int_t     nCol = gStyle->GetNumberOfColors();
-//   Float_t col[4] = { 0., 0., 0., 0.75};
-// 
-//   glBlendFunc(GL_SRC_ALPHA,GL_ONE);
-//   TGLUtil::SetDrawQuality(6);
-// 
-// 
-//   glPushName(0);
-//   if (fM->fRnrJets)
-//   {
-//     glEnable(GL_BLEND);                // Turn Blending On
-//     glDisable(GL_DEPTH_TEST); // Turn Depth Testing Off
-//     UInt_t jetid = 0;
-// 
-// 
-//     j = fM->fJets.begin();
-// 
-//     while (j != fM->fJets.end())
-//     {
-//       eta = j->Eta();
-//       phi = j->Phi();
-//       e   = j->E();
-// 
-//       x = eta*(fM->fEtaScale);
-//       y = phi*(fM->fPhiScale) - 350;
-// 
-//       Int_t colBin = TMath::Min((Int_t) ((nCol-2)*e*
-//                                      TMath::Power(10.,fM->fEnergyColorScale)/(eMax)),nCol-2);
-//       Int_t colIdx = gStyle->GetColorPalette(colBin);
-//       TColor* c    = gROOT->GetColor(colIdx);
-// 
-//       if(c)
-//       {
-//     col[0] = c->GetRed();
-//     col[1] = c->GetGreen();
-//     col[2] = c->GetBlue();
-//       }
-// 
-//       glLoadName(jetid);
-//       TGLUtil::DrawLine(TGLVertex3(x,y,0.),
-//                     TGLVector3(0.,0.,TMath::Log(e + 1.)*fM->fEnergyScale),
-//                     TGLUtil::kLineHeadArrow, 25.0, col);
-//       ++j; ++jetid;
-//     }
-//   }
-
-//   col[3] = 1.0;
-// 
-//   glPushName(1);
-//   if(fM->fRnrTracks)
-//   {
-//     glDisable(GL_BLEND);               // Turn Blending Off
-//     glEnable(GL_DEPTH_TEST);         // Turn Depth Testing On
-//     UInt_t trackid = 0;
-// 
-//     k = fM->fTracks.begin();
-// 
-//     while (k != fM->fTracks.end())
-//     {
-//       eta = k->Eta();
-//       phi = k->Phi();
-//       e   = k->E();
-// 
-//       if (e < 0.)
-//       {
-//     //                      printf(" WARNING: Particle with negative energy has been found.\n");
-//     //                      printf(" PARTICLE NOT DISPLAYED. TrackID: %i\n", trackid);
-//     ++k; ++trackid;
-//     continue;
-//       }
-// 
-//       x = eta*(fM->fEtaScale);
-//       y = phi*(fM->fPhiScale) - 350;
-// 
-//       Int_t colBin = TMath::Min((Int_t) ((nCol-2)*e*
-//                                      TMath::Power(10.,fM->fEnergyColorScale)/(eMax)),nCol-2);
-//       Int_t colIdx = gStyle->GetColorPalette(colBin);
-//       TColor* c    = gROOT->GetColor(colIdx);
-// 
-//       if(c)
-//       {
-//     col[0] = c->GetRed();
-//     col[1] = c->GetGreen();
-//     col[2] = c->GetBlue();
-//       }
-// 
-//       glLoadName(trackid);
-//       TGLUtil::DrawLine( TGLVertex3(x,y,0.),
-//                      TGLVector3(0.,0.,TMath::Log(e + 1.)*fM->fEnergyScale),
-//                      TGLUtil::kLineHeadArrow, 5.0, col);
-// 
-//       ++k; ++trackid;
-//     }
-//   }
-
-//  glPopName();
-//  TGLUtil::ResetDrawQuality();
 }
-
-// /******************************************************************************/
-// 
-void AliEveJetPlaneGL::ProcessSelection(TGLRnrCtx & /*rnrCtx*/, TGLSelectRecord & rec)
-{
-//   // Process selection and print jet information.
-// 
-//   //   printf("beep %u\n", rec.GetN());
-//   //   rec.Print();
-//   static Int_t jet1State;
-//   static Int_t jet2State;
-//   static Int_t track1State;
-//   static Int_t track2State;
-// 
-//   if (fM->fOneSelection)
-//   {
-//     printf("\n");
-// 
-//     if (rec.GetN() == 2)
-//     {
-//       AliAODJet v = fM->fJets[rec.GetItem(1)];
-//       printf("Jet 4-momentum: %f, %f, %f, %f \n", v.Px(),v.Py(),v.Pz(),v.Pt() );
-//       printf("Eta-Phi values: %f, %f\n", v.Eta(), v.Phi());
-//     }
-// 
-//     if (rec.GetN() == 3)
-//     {
-//       AliAODTrack v = fM->fTracks[rec.GetItem(2)];
-//       printf("TEveTrack 4-momentum: %f, %f, %f, %f \n", v.Px(),v.Py(),v.Pz(),v.Pt() );
-//       printf("Eta-Phi values: %f, %f\n", v.Eta(), v.Phi());
-//     }
-//   }
-// 
-//   if (fM->fTwoSelection)
-//   {
-// 
-//     if ( fM->fSelectionFlag == 1)
-//     {
-//       if (rec.GetN() == 2)
-//       {
-//     fM->SetJet1(&(fM->fJets[rec.GetItem(1)]));
-//         jet1State = 1;
-//     track1State = 0;
-//       }
-// 
-//       if (rec.GetN() == 3)
-//       {
-//     fM->SetTrack1(&(fM->fTracks[rec.GetItem(1)]));
-//     jet1State = 0;
-//     track1State = 1;
-//       }
-// 
-//       fM->SetSelectionFlag(2);
-// 
-//       return;
-//     }
-// 
-//     if ( fM->fSelectionFlag == 2)
-//     {
-//       printf("\n");
-//       if (rec.GetN() == 2)
-//       {
-//     fM->SetJet2(&(fM->fJets[rec.GetItem(1)]));
-//         jet2State = 1;
-//     track2State = 0;
-//       }
-// 
-//       if (rec.GetN() == 3)
-//       {
-//     fM->SetTrack2(&(fM->fTracks[rec.GetItem(1)]));
-//     jet2State = 0;
-//     track2State = 1;
-//       }
-// 
-//       printf("Jet: %i, TEveTrack: %i \n", jet1State, track1State);
-//       printf("Jet: %i, TEveTrack: %i \n\n", jet2State, track2State);
-// 
-//       if(jet1State && jet2State)
-//       {
-//     Double_t eta1, eta2, phi1, phi2, d;
-// 
-//     eta1 = (fM->GetJet1()).Eta();
-//     eta2 = (fM->GetJet2()).Eta();
-//     phi1 = (fM->GetJet1()).Phi();
-//         phi2 = (fM->GetJet2()).Phi();
-// 
-//     d = TMath::Sqrt(TMath::Power(eta2-eta1,2) + TMath::Power(phi2-phi1,2));
-// 
-//     printf("Eta-Phi: %f, %f\n", eta1, phi1);
-//     printf("Eta-Phi: %f, %f\n", eta2, phi2);
-//     printf("Eta-Phi Distance: %f\n", d);
-//       }
-// 
-//       fM->SetSelectionFlag(1);
-//     }
-// 
-//   }
-// 
-}
-
-
-
-
index 0b3959f..e3157b4 100644 (file)
@@ -33,8 +33,8 @@ public:
   virtual void   SetBBox();
 
   // To support two-level selection
-  virtual Bool_t SupportsSecondarySelect() const { return kTRUE; }
-  virtual void ProcessSelection(TGLRnrCtx & rnrCtx, TGLSelectRecord & rec);
+  // virtual Bool_t SupportsSecondarySelect() const { return kTRUE; }
+  // virtual void ProcessSelection(TGLRnrCtx & rnrCtx, TGLSelectRecord & rec);
 
 protected:
   AliEveJetPlane* fM; // Model object.