--- /dev/null
+// $Id$
+// Main authors: Matevz Tadel & Alja Mrak-Tadel: 2006, 2007
+
+/**************************************************************************
+ * Copyright(c) 1998-2008, ALICE Experiment at CERN, all rights reserved. *
+ * See http://aliceinfo.cern.ch/Offline/AliRoot/License.html for *
+ * full copyright notice. *
+ **************************************************************************/
+
+/***********************************************************************
+* This code defines the reconstructed v0 visualized with EVE
+*
+* Ludovic Gaudichet (gaudichet@to.infn.it)
+************************************************************************/
+
+#include "AliEveV0.h"
+
+#include <TEveTrack.h>
+#include <TEveTrackPropagator.h>
+#include <TEveManager.h>
+
+#include <TPolyLine3D.h>
+#include <TPolyMarker3D.h>
+#include <TColor.h>
+
+#include <vector>
+
+
+/***********************************************************************
+*
+* AliEveV0 class
+*
+************************************************************************/
+
+ClassImp(AliEveV0)
+
+AliEveV0::AliEveV0() :
+ TEvePointSet(),
+
+ fRecBirthV(),
+ fRecDecayV(),
+ fRecDecayP(),
+ fNegTrack(0),
+ fPosTrack(0),
+ fRnrStyle(0),
+ fPolyLineV0(),
+ fESDIndex(-1),
+ fDaughterDCA(999),
+ fChi2V0(-1)
+{}
+
+
+AliEveV0::AliEveV0(TEveRecTrack* tNeg, TEveRecTrack* tPos,
+ TEveRecV0* v0, TEveTrackPropagator* rs) :
+ TEvePointSet(),
+
+ fRecBirthV(v0->fV0Birth),
+ fRecDecayV(v0->fVCa),
+ fRecDecayP(v0->fPNeg + v0->fPPos),
+
+ fNegTrack(new TEveTrack(tNeg, rs)),
+ fPosTrack(new TEveTrack(tPos, rs)),
+
+ fRnrStyle(rs),
+ fPolyLineV0(),
+ fESDIndex(-1),
+ fDaughterDCA(999),
+ fChi2V0(-1)
+{
+ fPolyLineV0.SetLineColor(fMarkerColor);
+
+ fPosTrack->SetLineColor(2); // red
+ fNegTrack->SetLineColor(7); // light blue
+
+ fMainColorPtr = &fMarkerColor;
+ fMarkerStyle = 20;
+ fMarkerColor = 5;
+ fMarkerSize = 0.3;
+
+ AddElement(fNegTrack);
+ AddElement(fPosTrack);
+}
+
+AliEveV0::~AliEveV0()
+{}
+
+
+void AliEveV0::Reset(TPolyLine3D* polyLine)
+{
+ //polyLine->SetPolyLine(n_points);
+ polyLine->SetPolyLine(0);
+}
+
+//______________________________________________________________________________
+void AliEveV0::MakeV0path()
+{
+ fPolyLineV0.SetPoint(0, fRecBirthV.fX, fRecBirthV.fY, fRecBirthV.fZ);
+ fPolyLineV0.SetPoint(1, fRecDecayV.fX, fRecDecayV.fY, fRecDecayV.fZ);
+}
+
+
+//______________________________________________________________________________
+void AliEveV0::MakeV0()
+{
+ SetPoint(0, fRecDecayV.fX, fRecDecayV.fY, fRecDecayV.fZ);
+
+ fNegTrack->MakeTrack();
+ fPosTrack->MakeTrack();
+ MakeV0path();
+}
+
+
+/***********************************************************************
+*
+* AliEveV0List class
+*
+************************************************************************/
+
+ClassImp(AliEveV0List)
+
+//______________________________________________________________________________
+AliEveV0List::AliEveV0List() :
+ TEveElementList(),
+ fTitle(),
+ fRnrStyle(0),
+ fRnrDaughters(kTRUE),
+ fRnrV0vtx(kTRUE),
+ fRnrV0path(kTRUE),
+ fNegColor(0),
+ fPosColor(0)
+{
+ fChildClass = AliEveV0::Class(); // override member from base TEveElementList
+}
+
+//______________________________________________________________________________
+AliEveV0List::AliEveV0List(TEveTrackPropagator* rs) :
+ TEveElementList(),
+ fTitle(),
+ fRnrStyle(rs),
+ fRnrDaughters(kTRUE),
+ fRnrV0vtx(kTRUE),
+ fRnrV0path(kTRUE),
+ fNegColor(0),
+ fPosColor(0)
+{
+ fChildClass = AliEveV0::Class(); // override member from base TEveElementList
+
+ Init();
+}
+
+//______________________________________________________________________________
+AliEveV0List::AliEveV0List(const Text_t* name, TEveTrackPropagator* rs) :
+ TEveElementList(),
+ fTitle(),
+ fRnrStyle(rs),
+ fRnrDaughters(kTRUE),
+ fRnrV0vtx(kTRUE),
+ fRnrV0path(kTRUE),
+ fNegColor(0),
+ fPosColor(0)
+{
+ fChildClass = AliEveV0::Class(); // override member from base TEveElementList
+
+ Init();
+ SetName(name);
+}
+
+//______________________________________________________________________________
+void AliEveV0List::Init()
+{
+ if (fRnrStyle== 0) fRnrStyle = new TEveTrackPropagator;
+
+}
+
+//______________________________________________________________________________
+AliEveV0List::~AliEveV0List()
+{
+
+}
+
+//______________________________________________________________________________
+void AliEveV0List::Paint(Option_t* option)
+{
+ if(fRnrSelf) {
+
+ if(fRnrV0vtx) {
+ for(List_i i=fChildren.begin(); i!=fChildren.end(); ++i) {
+ if((*i)->GetRnrSelf()) {
+ ((AliEveV0*)(*i))->Paint(option);
+ }
+ }
+ }
+
+ if(fRnrDaughters) {
+ for(List_i i=fChildren.begin(); i!=fChildren.end(); ++i) {
+ if((*i)->GetRnrSelf()) {
+ ((AliEveV0*)(*i))->PaintDaughters(option);
+ }
+ }
+ }
+
+ if(fRnrV0path) {
+ for(List_i i=fChildren.begin(); i!=fChildren.end(); ++i) {
+ if((*i)->GetRnrSelf()) {
+ ((AliEveV0*)(*i))->PaintPath(option);
+ }
+ }
+ }
+ }
+}
+
+
+//______________________________________________________________________________
+
+void AliEveV0List::SetRnrV0vtx(Bool_t rnr)
+{
+ fRnrV0vtx = rnr;
+ gEve->Redraw3D();
+}
+
+void AliEveV0List::SetRnrV0path(Bool_t rnr)
+{
+ fRnrV0path = rnr;
+ gEve->Redraw3D();
+}
+
+void AliEveV0List::SetRnrDaughters(Bool_t rnr)
+{
+ fRnrDaughters = rnr;
+ gEve->Redraw3D();
+}
+
+
+//______________________________________________________________________________
+
+void AliEveV0List::MakeV0s()
+{
+ for(List_i i=fChildren.begin(); i!=fChildren.end(); ++i) {
+ ((AliEveV0*)(*i))->MakeV0();
+ }
+ gEve->Redraw3D();
+}
+
+
+void AliEveV0List::MakeMarkers()
+{
+ gEve->Redraw3D();
+}
--- /dev/null
+// $Id$
+// Main authors: Matevz Tadel & Alja Mrak-Tadel: 2006, 2007
+
+/**************************************************************************
+ * Copyright(c) 1998-2008, ALICE Experiment at CERN, all rights reserved. *
+ * See http://aliceinfo.cern.ch/Offline/AliRoot/License.html for *
+ * full copyright notice. *
+ **************************************************************************/
+#ifndef AliEveV0_H
+#define AliEveV0_H
+
+/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+ * See cxx source for full Copyright notice */
+
+
+/***********************************************************************
+* This code defines the reconstructed v0 visualized with EVE
+*
+* Ludovic Gaudichet (gaudichet@to.infn.it)
+************************************************************************/
+
+#include <TEveVSDStructs.h>
+#include <TEveElement.h>
+#include <TEveTrack.h>
+
+#include <TPolyMarker3D.h>
+#include <TPolyLine3D.h>
+
+class TH1F;
+class TH2F;
+
+
+class AliEveV0List;
+
+class AliEveV0 : public TEvePointSet
+{
+ friend class AliEveV0List;
+
+public:
+ AliEveV0();
+ AliEveV0(TEveRecTrack* tNeg, TEveRecTrack* tPos, TEveRecV0* v0,
+ TEveTrackPropagator* rs);
+ virtual ~AliEveV0();
+
+ //void AddPathMarkPos(TEvePathMark* pm) { fPathMarksPos.push_back(pm); }
+ //void AddPathMarkNeg(TEvePathMark* pm) { fPathMarksNeg.push_back(pm); }
+
+ void Reset(TPolyLine3D* polyLine);
+
+ void MakeV0path();
+ void MakeV0();
+
+ virtual void PaintDaughters(Option_t* option="")
+ {
+ if (fRnrSelf) { fNegTrack->Paint(option); fPosTrack->Paint(option);}
+ }
+
+ virtual void Paint(Option_t* option="")
+ {
+ if (fRnrSelf) TEvePointSet::Paint(option);
+ }
+
+ virtual void PaintPath(Option_t* option="")
+ {
+ if (fRnrSelf) fPolyLineV0.Paint(option);
+ }
+
+ virtual void SetMainColor(Color_t col)
+ {
+ fMarkerColor = col; fMainColorPtr = &fMarkerColor;
+ fPolyLineV0.SetLineColor(fMarkerColor);
+ }
+
+ void SetRnrStyle(TEveTrackPropagator* rs) { fRnrStyle = rs; }
+
+ Float_t GetDaughterDCA() const { return fDaughterDCA; }
+ void SetDaughterDCA(Float_t dca) { fDaughterDCA = dca; }
+
+ Float_t GetRadius() const { return fRecDecayV.Perp(); }
+
+ Int_t GetESDIndex() const { return fESDIndex; }
+ void SetESDIndex(Int_t ind) { fESDIndex = ind;}
+
+ virtual const Text_t* GetName() const { return Form("ESDv0_%i",fESDIndex); }
+ virtual const Text_t* GetTitle() const { return Form("ESDv0_%i",fESDIndex); }
+
+ //Int_t GetLabelPos() const { return fLabel_pos; }
+ //Int_t GetLabelNeg() const { return fLabel_neg; }
+ TEveTrackPropagator* GetPropagator() const { return fRnrStyle; }
+
+ TEveTrack* GetNegTrack() { return fNegTrack; }
+ TEveTrack* GetPosTrack() { return fPosTrack; }
+
+ TPolyLine3D* GetPolyLineV0() { return &fPolyLineV0; }
+
+protected:
+ TEveVector fRecBirthV; // Reconstucted birth point of neutral particle
+ TEveVector fRecDecayV; // Point of closest approach
+ TEveVector fRecDecayP;
+
+ TEveTrack *fNegTrack;
+ TEveTrack *fPosTrack;
+
+ TEveTrackPropagator *fRnrStyle;
+
+ TPolyLine3D fPolyLineV0;
+
+ Int_t fESDIndex;
+ Float_t fDaughterDCA;
+ Float_t fChi2V0;
+
+private:
+ AliEveV0(const AliEveV0&); // Not implemented
+ AliEveV0& operator=(const AliEveV0&); // Not implemented
+
+ ClassDef(AliEveV0, 0); // Visual representation of a AliEveV0.
+};
+
+
+/******************************************************************************/
+// AliEveV0List
+/******************************************************************************/
+
+class AliEveV0List : public TEveElementList
+{
+public:
+ AliEveV0List();
+ AliEveV0List(TEveTrackPropagator* rs);
+ AliEveV0List(const Text_t* name, TEveTrackPropagator* rs=0);
+ virtual ~AliEveV0List();
+
+ virtual const Text_t* GetTitle() const { return fTitle; }
+ virtual void SetTitle(const Text_t* t) { fTitle = t; }
+ virtual void SetTracksColor(Color_t cNeg, Color_t cPos) {
+ fNegColor = cNeg; fPosColor = cPos;}
+
+ virtual Bool_t CanEditMainColor() const { return kTRUE; }
+
+ virtual void Paint(Option_t* option="");
+
+ void SetRnrStyle(TEveTrackPropagator* rst) { fRnrStyle = rst; }
+ TEveTrackPropagator* GetPropagator() { return fRnrStyle; }
+
+ Bool_t GetRnrV0vtx() const { return fRnrV0vtx; }
+ Bool_t GetRnrV0path() const { return fRnrV0path; }
+ Bool_t GetRnrDaughters() const { return fRnrDaughters; }
+
+ void SetRnrV0vtx(Bool_t);
+ void SetRnrV0path(Bool_t);
+ void SetRnrDaughters(Bool_t);
+
+ void MakeV0s();
+ void MakeMarkers();
+
+protected:
+ TString fTitle;
+
+ TEveTrackPropagator *fRnrStyle;
+
+ Bool_t fRnrDaughters;
+ Bool_t fRnrV0vtx;
+ Bool_t fRnrV0path;
+
+ Color_t fNegColor;
+ Color_t fPosColor;
+
+private:
+ void Init();
+
+ AliEveV0List(const AliEveV0List&); // Not implemented
+ AliEveV0List& operator=(const AliEveV0List&); // Not implemented
+
+ ClassDef(AliEveV0List, 0); // A list of AliEveV0 objecs.
+};
+
+
+#endif
// #pragma link C++ class CascadeListEditor+;
//
// AliEveV0
-// #pragma link C++ class AliEveV0+;
-// #pragma link C++ class V0List+;
-// #pragma link C++ class V0ListEditor+;
-
+#pragma link C++ class AliEveV0+;
+#pragma link C++ class AliEveV0List+;
+//#pragma link C++ class AliEveV0ListEditor+;
TEveEventManager *mgr = gEve ? gEve->GetCurrentEvent() : 0;
if (mgr) {
fgHtmlSummary->Clear("D");
- for (i=mgr->BeginChildren(); i!=mgr->EndChildren(); ++i) {
+ for (i=mgr->BeginChildren(); i!=mgr->EndChildren(); ++i)
+ {
el = ((TEveElement*)(*i));
if (el->IsA() == TEvePointSet::Class()) {
TEvePointSet *ps = (TEvePointSet *)el;
TString ename = ps->GetElementName();
TString etitle = ps->GetElementTitle();
- ename.Remove(ename.First('\''));
- etitle.Remove(0, 2);
+ //ename.Remove(ename.First('\''));
+ //etitle.Remove(0, 2);
Int_t nel = atoi(etitle.Data());
table = fgHtmlSummary->AddTable(ename, 0, nel);
}
else if (el->IsA() == TEveTrackList::Class()) {
TEveTrackList *tracks = (TEveTrackList *)el;
TString ename = tracks->GetElementName();
- ename.Remove(ename.First('\''));
+ // ename.Remove(ename.First('\''));
table = fgHtmlSummary->AddTable(ename.Data(), 5,
- tracks->GetNChildren(), kTRUE, "first");
+ tracks->GetNChildren(), kTRUE, "first");
table->SetLabel(0, "Momentum");
table->SetLabel(1, "P_t");
table->SetLabel(2, "Phi");
* full copyright notice. *
**************************************************************************/
+void esd_v0_init_rectrack(TEveRecTrack& rt, AliExternalTrackParam* tp)
+{
+ Double_t pbuf[3], vbuf[3];
+
+ rt.fSign = tp->GetSign();
+ tp->GetXYZ(vbuf); rt.fV.Set(vbuf);
+ tp->GetPxPyPz(pbuf); rt.fP.Set(pbuf);
+ // Double_t ep = at->GetP(), mc = at->GetMass();
+ rt.fBeta = 1; // ep/TMath::Sqrt(ep*ep + mc*mc);
+}
+
AliEveV0* esd_make_v0(TEveTrackPropagator* rnrStyle, AliESDVertex* primVtx,
AliESDtrack* neg, AliESDtrack* pos, AliESDv0* v0, Int_t i)
{
Double_t p[3];
v0->GetNPxPyPz(p[0], p[1], p[2]);
- rcV0.P_pos.Set(p);
+ rcV0.fPPos.Set(p);
v0->GetPPxPyPz(p[0], p[1], p[2]);
- rcV0.P_neg.Set(p);
+ rcV0.fPNeg.Set(p);
v0->GetPxPyPz(p[0], p[1], p[2]);
Double_t v[3];
v0->GetXYZ(v[0], v[1], v[2]);
-
// printf(" %f %f %f / %f %f %f %i\n",p[0], p[1], p[2],
// v[0], v[1], v[2], v0->GetOnFlyStatus());
- rcV0.V_neg.Set(v); //original track vertices at dca not stored
- rcV0.V_pos.Set(v);
- rcV0.V_ca.Set(v);
+ rcV0.fVNeg.Set(v); //original track vertices at dca not stored
+ rcV0.fVPos.Set(v);
+ rcV0.fVCa.Set(v);
- rcV0.d_label[0] = v0->GetNindex();
- rcV0.d_label[1] = v0->GetPindex();
-
- Double_t ep = neg->GetP(), mc = neg->GetMass();
- rcNeg.beta = ep/TMath::Sqrt(ep*ep + mc*mc);
- ep = pos->GetP(); mc = pos->GetMass();
- rcPos.beta = ep/TMath::Sqrt(ep*ep + mc*mc);
+ rcV0.fDLabel[0] = v0->GetNindex();
+ rcV0.fDLabel[1] = v0->GetPindex();
+ esd_v0_init_rectrack(rcNeg, v0->GetParamN());
+ esd_v0_init_rectrack(rcPos, v0->GetParamP());
AliEveV0* myV0 = new AliEveV0(&rcNeg, &rcPos, &rcV0, rnrStyle);
char ch[50];
myV0->SetESDIndex(i);
myV0->SetDaughterDCA(v0->GetDcaV0Daughters());
- Double_t primx = primVtx->GetXv(),
- primy = primVtx->GetYv(),
- primz = primVtx->GetZv();
- myV0->SetCosPointingAngle(v0->GetV0CosineOfPointingAngle(primx,primy,primz));
-
- myV0->SetDecayLength(primVtx->GetXv(), primVtx->GetYv(), primVtx->GetZv());
-
return myV0;
} else {
return 0;
}
-
}
-V0List* esd_AliEveV0(Double_t min_pt=0.1, Double_t max_pt=100)
+AliEveV0List* esd_V0(Double_t min_pt=0.1, Double_t max_pt=100)
{
- printf("THIS SCRIPT DOES NOT WORK.\n"
- "AliEveV0 classes have been temporarily removed.\n"
- "They need to be cleaned up.\n");
- return;
-
AliESDEvent* esd = AliEveEventManager::AssertESD();
AliESDVertex* primVertex =(AliESDVertex*) esd->GetVertex();
- V0List* cont = new V0List("ESD v0");
+ AliEveV0List* cont = new AliEveV0List("ESD v0");
cont->SetMainColor(Color_t(3)); // green
TEveTrackPropagator* rnrStyle = cont->GetPropagator();
rnrStyle->SetMagField( 0.1*esd->GetMagneticField() );
}
}
- cont->SetTitle("testV0List ");
+ cont->SetTitle("test");
cont->UpdateItems();
cont->MakeV0s();