1 #if !defined(__CINT__) || defined(__MAKECINT__)
3 #include "AliTPCtracker.h"
5 #include "TPolyMarker3D.h"
6 #include "AliSimDigits.h"
7 #include "AliTPCParam.h"
8 #include "AliRunLoader.h"
9 #include "AliTPCclusterMI.h"
13 Author: marian.ivanov@cern.ch
16 TGeoManager::Import("geometry.root");
17 .L AliTPCDisplayClustersMI.C+
18 AliTPCDisplayClusters disp;
19 disp.Init(0,0); //specify event number, and threshold for the noise
20 disp.DisplayClusters();
27 class AliTPCDisplayClusters{
29 AliTPCDisplayClusters();
30 void SetIO(Int_t event);
31 void LoadClusters(Int_t noiseth);
32 void DisplayClusters(Int_t first=0, Int_t last=-1);
33 void Init(Int_t event, Int_t noiseth){SetIO(event); LoadClusters(noiseth);}
41 //----------------------------------------------------------------------
42 AliTPCDisplayClusters::AliTPCDisplayClusters()
49 //----------------------------------------------------------------------
50 void AliTPCDisplayClusters::SetIO(Int_t event)
52 AliRunLoader* rl = AliRunLoader::Open();
54 AliLoader* tpcl = (AliLoader*)rl->GetLoader("TPCLoader");
57 cerr<<"Can not get TPC Loader"<<endl;
61 fParam=(AliTPCParam *)gDirectory->Get("75x40_100x60_150x60");
62 fGeom=(TGeometry*)gDirectory->Get("AliceGeom");
64 fParam = new AliTPCParamSR();
68 if (!fParam) {cerr<<"TPC parameters have not been found !\n"; return ;}
69 tpcl->LoadRecPoints();
70 fTree = tpcl->TreeR();
73 //----------------------------------------------------------------------
74 void AliTPCDisplayClusters::LoadClusters(Int_t noiseth)
77 // load all clusters to memory
82 fArray = new TObjArray(fParam->GetNSegmentsTotal());
84 AliTPCClustersRow * pclrow = new AliTPCClustersRow;
85 pclrow->SetClass("AliTPCclusterMI");
87 TBranch *br = fTree->GetBranch("Segment");
88 br->SetAddress(&pclrow);
91 Int_t nrows=Int_t(fTree->GetEntries());
92 for (Int_t n=0; n<nrows; n++) {
94 pclrow = new AliTPCClustersRow;
95 pclrow->SetClass("AliTPCclusterMI");
97 br->SetAddress(&pclrow);
100 AliTPCClustersRow &clrow = *pclrow;
101 Int_t ncl=clrow.GetArray()->GetEntriesFast();
102 TObjArray * arrrow = new TObjArray(0);
103 fArray->AddAt(arrrow,pclrow->GetID());
105 // printf("segment\t%d\trow\t%d\tclusters\t%d",n,pclrow->GetID(),ncl);
107 AliTPCclusterMI *cl=(AliTPCclusterMI*)clrow[ncl];
108 if (cl->GetQ()>noiseth){
112 // printf("over\t%d\n",arrrow->GetEntries());
118 void AliTPCDisplayClusters::DisplayClusters(Int_t first, Int_t last)
120 Int_t nrows = fParam->GetNSegmentsTotal();
122 Int_t markerColorSignal = 5;
123 Int_t markerColorBgr = 2;
124 Int_t MASK = 10000000;
126 TCanvas *c1=new TCanvas("cdisplay", "Cluster display",0,0,700,730);
127 TView3D *v=new TView3D();
128 v->SetRange(-330,-360,-330,360,360,1710);
134 for (Int_t irow=0; irow<nrows; irow++) {
136 TObjArray * arr = (TObjArray*)fArray->At(irow);
140 fParam->AdjustSectorRow(irow,sec,row);
141 Int_t ncl=arr->GetEntriesFast();
143 TPolyMarker3D *pm=new TPolyMarker3D(ncl);
144 TPolyMarker3D *pmSignal=new TPolyMarker3D(ncl); // polymarker for signal
149 AliTPCclusterMI *cl=(AliTPCclusterMI*)arr->At(ncl);
152 Double_t x=fParam->GetPadRowRadii(sec,row), y=cl->GetY(), z=cl->GetZ();
154 fParam->AdjustCosSin(sec,cs,sn);
155 tmp = x*cs-y*sn; y= x*sn+y*cs; x=tmp;
157 cl->GetGlobalXYZ(clxyz);
159 Int_t trackId = cl->GetLabel(0);
160 if ( (last>0) &&trackId>last) continue;
161 if (trackId<first) continue;
162 if (trackId < MASK-1) {
163 pmSignal->SetPoint(imarSignal,clxyz[0],clxyz[1],clxyz[2]);
166 pm->SetPoint(imarBgr,clxyz[0],clxyz[1],clxyz[2]);
172 // change color for signal
173 pm->SetMarkerSize(1);
174 pm->SetMarkerColor(markerColorBgr);
175 pm->SetMarkerStyle(1);
178 pmSignal->SetMarkerSize(1);
179 pmSignal->SetMarkerColor(markerColorSignal);
180 pmSignal->SetMarkerStyle(1);
185 // TNode * main = (TNode*)((fGeom->GetListOfNodes())->First());
186 // TIter next(main->GetListOfNodes());
188 // while((module = (TNode*)next())) {
190 // sprintf(ch,"%s\n",module->GetTitle());
191 // //printf("%s\n",module->GetTitle());
192 // if (ch[0]=='T'&&ch[1]=='P' && ch[2]=='C') //if TPC draw
193 // module->SetVisibility(3);
195 // module->SetVisibility(-1);
199 // fGeom->Draw("same");
200 c1->Modified(); c1->Update();