arrow implementation.
//
// Show jets and tracks in eta-phi plane.
//
-//
+//
ClassImp(AliEveJetPlane)
/******************************************************************************/
-void AliEveJetPlane::AddJet(AliAODJet* jet)
+void AliEveJetPlane::AddJet(AliAODJet* jet)
{
// Add a jet for display.
-
+
fJets.push_back(*jet);
}
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);
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()",
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);
/******************************************************************************/
-// 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;
-// }
+
/******************************************************************************/
{
// 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");
}
/******************************************************************************/
#include <vector>
//==============================================================================
-//
+//
// AliEveJetPlane
//
// Class for display of jets and tracks in eta-phi plane.
}
}
-
-// // 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);
-// }
-//
-// }
-//
-}
-
-
-
-
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.