#include "AliEveTPCSector2D.h"
#include "AliEveTPCSector3D.h"
#include <EveDet/AliEveTPCSectorData.h>
#include <TEveTrans.h>
#include <TBuffer3D.h>
#include <TBuffer3DTypes.h>
#include <TVirtualPad.h>
#include <TVirtualViewer3D.h>
#include <TH1S.h>
#include <TH2S.h>
#include <TVirtualPad.h>
ClassImp(AliEveTPCSector2D)
AliEveTPCSector2D::AliEveTPCSector2D(const Text_t* n, const Text_t* t) :
AliEveTPCSectorViz(n,t),
fShowMax (kTRUE),
fAverage (kFALSE),
fUseTexture (kTRUE),
fPickEmpty (kFALSE),
fPickMode (1)
{
}
void AliEveTPCSector2D::MakeSector3D()
{
AliEveTPCSector3D* s = new AliEveTPCSector3D;
s->SetDataSource(fTPCData);
s->SetSectorID(fSectorID);
s->SetAutoTrans(fAutoTrans);
s->CopyVizParams(this);
AddElement(s);
ElementChanged(kFALSE, kTRUE);
}
void AliEveTPCSector2D::ComputeBBox()
{
const AliEveTPCSectorData::SegmentInfo& iSeg = AliEveTPCSectorData::GetInnSeg();
const AliEveTPCSectorData::SegmentInfo& o2Seg = AliEveTPCSectorData::GetOut2Seg();
BBoxInit();
Float_t w = o2Seg.GetNMaxPads()*o2Seg.GetPadWidth()/2;
fBBox[0] = -w;
fBBox[1] = w;
fBBox[2] = iSeg.GetRLow();
fBBox[3] = o2Seg.GetRLow() + o2Seg.GetNRows()*o2Seg.GetPadHeight();
fBBox[4] = -0.5;
fBBox[5] = 0.5;
}
void AliEveTPCSector2D::PadSelected(Int_t row, Int_t pad)
{
Int_t sseg = fSectorID, srow = row;
if (row >= AliEveTPCSectorData::GetInnSeg().GetNRows()) {
sseg += 36;
srow -= AliEveTPCSectorData::GetInnSeg().GetNRows();
}
switch (fPickMode)
{
case 0: {
printf("AliEveTPCSector2DGL::ProcessSelection segment=%d, row=%d, pad=%d\n",
sseg, srow, pad);
break;
}
case 1: {
AliEveTPCSectorData* sectorData = GetSectorData();
if (sectorData == 0) return;
Int_t mint = fMinTime;
Int_t maxt = fMaxTime;
TH1S* h = new TH1S(Form("Seg%d_Row%d_TEvePad%d", sseg, srow, pad),
Form("Segment %d, Row %d, TEvePad %d", sseg, srow, pad),
maxt - mint +1 , mint, maxt);
h->SetXTitle("Time");
h->SetYTitle("ADC");
AliEveTPCSectorData::PadIterator i = sectorData->MakePadIterator(row, pad);
while (i.Next())
h->Fill(i.Time(), i.Signal());
h->Draw();
gPad->Modified();
gPad->Update();
break;
}
case 2: {
AliEveTPCSectorData* sectorData = GetSectorData();
if (sectorData == 0) return;
Int_t mint = fMinTime;
Int_t maxt = fMaxTime;
Int_t npad = AliEveTPCSectorData::GetNPadsInRow(row);
TH2S* h = new TH2S(Form("Seg%d_Row%d", sseg, srow),
Form("Segment %d, Row %d", sseg, srow),
maxt - mint +1 , mint, maxt,
npad, 0, npad - 1);
h->SetXTitle("Time");
h->SetYTitle("TEvePad");
h->SetZTitle("ADC");
AliEveTPCSectorData::RowIterator i = sectorData->MakeRowIterator(row);
while (i.NextPad())
while (i.Next())
h->Fill(i.Time(), i.TEvePad(), i.Signal());
h->Draw();
gPad->Modified();
gPad->Update();
break;
}
}
}
void AliEveTPCSector2D::Paint(Option_t* )
{
if(fRnrSelf == kFALSE)
return;
TBuffer3D buffer(TBuffer3DTypes::kGeneric);
buffer.fID = this;
buffer.fColor = GetMainColor();
buffer.fTransparency = GetMainTransparency();
if (HasMainTrans()) RefMainTrans().SetBuffer3D(buffer);
buffer.SetSectionsValid(TBuffer3D::kCore);
Int_t reqSections = gPad->GetViewer3D()->AddObject(buffer);
if (reqSections == TBuffer3D::kNone) {
return;
}
Error("AliEveTPCSector2D::Paint", "only direct OpenGL rendering supported.");
}
AliEveTPCSector2D.cxx:100 AliEveTPCSector2D.cxx:101 AliEveTPCSector2D.cxx:102 AliEveTPCSector2D.cxx:103 AliEveTPCSector2D.cxx:104 AliEveTPCSector2D.cxx:105 AliEveTPCSector2D.cxx:106 AliEveTPCSector2D.cxx:107 AliEveTPCSector2D.cxx:108 AliEveTPCSector2D.cxx:109 AliEveTPCSector2D.cxx:110 AliEveTPCSector2D.cxx:111 AliEveTPCSector2D.cxx:112 AliEveTPCSector2D.cxx:113 AliEveTPCSector2D.cxx:114 AliEveTPCSector2D.cxx:115 AliEveTPCSector2D.cxx:116 AliEveTPCSector2D.cxx:117 AliEveTPCSector2D.cxx:118 AliEveTPCSector2D.cxx:119 AliEveTPCSector2D.cxx:120 AliEveTPCSector2D.cxx:121 AliEveTPCSector2D.cxx:122 AliEveTPCSector2D.cxx:123 AliEveTPCSector2D.cxx:124 AliEveTPCSector2D.cxx:125 AliEveTPCSector2D.cxx:126 AliEveTPCSector2D.cxx:127 AliEveTPCSector2D.cxx:128 AliEveTPCSector2D.cxx:129 AliEveTPCSector2D.cxx:130 AliEveTPCSector2D.cxx:131 AliEveTPCSector2D.cxx:132 AliEveTPCSector2D.cxx:133 AliEveTPCSector2D.cxx:134 AliEveTPCSector2D.cxx:135 AliEveTPCSector2D.cxx:136 AliEveTPCSector2D.cxx:137 AliEveTPCSector2D.cxx:138 AliEveTPCSector2D.cxx:139 AliEveTPCSector2D.cxx:140 AliEveTPCSector2D.cxx:141 AliEveTPCSector2D.cxx:142 AliEveTPCSector2D.cxx:143 AliEveTPCSector2D.cxx:144 AliEveTPCSector2D.cxx:145 AliEveTPCSector2D.cxx:146 AliEveTPCSector2D.cxx:147 AliEveTPCSector2D.cxx:148 AliEveTPCSector2D.cxx:149 AliEveTPCSector2D.cxx:150 AliEveTPCSector2D.cxx:151 AliEveTPCSector2D.cxx:152 AliEveTPCSector2D.cxx:153 AliEveTPCSector2D.cxx:154 AliEveTPCSector2D.cxx:155 AliEveTPCSector2D.cxx:156 AliEveTPCSector2D.cxx:157 AliEveTPCSector2D.cxx:158 AliEveTPCSector2D.cxx:159 AliEveTPCSector2D.cxx:160 AliEveTPCSector2D.cxx:161 AliEveTPCSector2D.cxx:162 AliEveTPCSector2D.cxx:163 AliEveTPCSector2D.cxx:164 AliEveTPCSector2D.cxx:165 AliEveTPCSector2D.cxx:166 AliEveTPCSector2D.cxx:167 AliEveTPCSector2D.cxx:168 AliEveTPCSector2D.cxx:169 AliEveTPCSector2D.cxx:170 AliEveTPCSector2D.cxx:171 AliEveTPCSector2D.cxx:172 AliEveTPCSector2D.cxx:173 AliEveTPCSector2D.cxx:174 AliEveTPCSector2D.cxx:175 AliEveTPCSector2D.cxx:176 AliEveTPCSector2D.cxx:177 AliEveTPCSector2D.cxx:178 AliEveTPCSector2D.cxx:179 AliEveTPCSector2D.cxx:180 AliEveTPCSector2D.cxx:181