736{
738
740
741 TObjArray *SAr = new TObjArray();
744 Tv->
FillBitView(vmod,cfx,cfy,Xmin,Xmax,Ymin,Ymax,inside,rep);
750 float X[200],
Y[200] ,
Z[200];
751 int ntracks =
tracks->GetEntries();
755 int sid = 0;
756 int cyclelimit = 10;
757
758 for (
long t=0;
t<ntracks;
t++) {
760 tr->x =
tr->x * bs + Xmin;
761 tr->y =
tr->y * bs + Ymin;
763 float resinit = 0;
764 int pulsinit = 0;
765 int cyc = 0;
766CYCLE:
767 cyc++;
768 int n = 0;
770
771
772
773 for (long i=0; i<nclusters; i++) {
774 int flag = false;
776 float xc = cl->
GetX();
777 float yc = cl->
GetY();
778 float zc = cl->
GetZ();
779 if (
In(xc,yc,Xmin,Xmax,Ymin,Ymax)&&
SatCondAccept(
tr,xc,yc,zc,
dX,
dY,
dZ,accept)) {
780
781
782
783
784
785
786 if (inside) {
788
790 flag = true;
791 break;
792 }
793 }
794 if (!flag) continue;
795 }
797 if (
int last =
s->GetNelements()) {
799 if (zc==clsucc->
GetZ()) {
804 else {
805 (*(
s->GetElements()))[last-1] = cl;
809 continue;
810 }
811 }
812 }
818 n++;
819 }
820 }
821 float Ax,Bx,erAx,erBx,sx,Ay,By,erAy,erBy,sy;;
822 int flagx =
MY_LFIT(
Z,
X,n,1,Ax,Bx,erAx,erBx,sx);
823 int flagy =
MY_LFIT(
Z,
Y,n,1,Ay,By,erAy,erBy,sy);
824 if (flagx&&flagy) {
825 int puls =
s->GetNelements();
826 int side = ((
EdbCluster *)(
s->GetElements()->At(0)))->GetSide();
827 float maxz = ((
EdbCluster *)(
s->GetElements()->At(0)))->GetZ();
828 float minz = maxz;
829 for (long j=0; j<puls; j++) {
831 if (minz>=cl->
GetZ()) minz = cl->
GetZ();
832 if (maxz<cl->GetZ()) maxz = cl->
GetZ();
833 }
834 float res = sqrt((sx*sx)+(sy*sy));
836 if (((pulsinit!=puls)||(res!=resinit))&&cyc<cyclelimit) {
837 pulsinit = puls;
838 resinit = res;
845 s->GetElements()->Clear();
846 goto CYCLE;
847 }
849
850 float dz = maxz-minz;
851 s->Set(
tr->x,
tr->y,
tr->z,Ax,Ay,
dz,side,puls,sid);
853
854
855
856
857
858
859
861 sid++;
862 }
863
864 }
865 delete Tv;
867
869 if (sid==0) return vmod;
870
873 for (int s0=0; s0<sid-1; s0++) {
874
876 int newid=seg0->
GetID();
877 int numofdel = 0;
878 int rep = 0;
879
880 for (
int s=s0+1;
s<sid;
s++) {
882
883
884
885
886
888
890
891
892 ||(excludeCommonClusters
895 )
896 {
900 (*(SAr))[s0] = seg;
902 seg0 = seg;
903 rep=1;
904 }
906 delete (SAr->RemoveAt(
s));
907 numofdel++;
908
909 }
910 else {
911 newid++;
913
914 }
915 }
916 SAr->Compress();
917
918 sid -= numofdel;
919 if (rep) s0--;
920 }
923
925
926
927 for (
int ss=0;
ss<sid;
ss++) {
940 delete segnew;
942
947 }
948
949 }
950 SAr->Delete();
951 delete SAr;
953 return vmod;
954}
float zl[dim]
Definition: RecDispMC_Profiles.C:61
TTree * tr
Definition: Shower_E_FromShowerRoot.C:5
Expr< UnaryOp< Fabs< T >, Expr< A, T, D >, T >, T, D > fabs(const Expr< A, T, D > &rhs)
Definition: UnaryOperators.hh:96
int In(float X, float Y, float Xmin, float Xmax, float Ymin, float Ymax)
Definition: bitview.cxx:18
int CommonClusters(EdbSegment *seg0, EdbSegment *seg1)
Definition: bitview.cxx:28
float Distance(float xp, float yp, float zp, float x0, float y0, float z0, float teta, float phi)
Definition: bitview.cxx:88
int SatCondAccept(track *tr, float xc, float yc, float zc, double dx, double dy, double dz, float accept)
Definition: bitview.cxx:153
int MY_LFIT(float *X, float *Y, int L, int KEY, float &A, float &B, float &erA, float &erB, float &s)
Definition: bitview.cxx:180
Definition: EdbCluster.h:19
void SetSegment(int seg)
Definition: EdbCluster.h:49
Float_t GetX() const
Definition: EdbCluster.h:51
Float_t GetY() const
Definition: EdbCluster.h:52
Float_t GetZ() const
Definition: EdbCluster.h:53
virtual Float_t GetDz() const
Definition: EdbSegment.h:43
virtual Float_t GetX0() const
Definition: EdbSegment.h:38
virtual Float_t GetTx() const
Definition: EdbSegment.h:41
virtual Float_t GetZ0() const
Definition: EdbSegment.h:40
virtual Float_t GetY0() const
Definition: EdbSegment.h:39
virtual Float_t GetTy() const
Definition: EdbSegment.h:42
segment of the track
Definition: EdbSegment.h:63
Int_t GetPuls() const
Definition: EdbSegment.h:90
void AddElement(TObject *element)
Definition: EdbSegment.cxx:150
Int_t GetNelements() const
Definition: EdbSegment.h:114
TObjArray * GetElements() const
Definition: EdbSegment.h:117
Int_t GetID() const
Definition: EdbSegment.h:92
void SetID(int id)
Definition: EdbSegment.h:96
Int_t GetSide() const
Definition: EdbSegment.h:89
Base scanning data object: entry into Run tree.
Definition: EdbView.h:134
TClonesArray * GetSegments() const
Definition: EdbView.h:165
EdbViewHeader * GetHeader() const
Definition: EdbView.h:163
EdbSegment * AddSegment(float x, float y, float z, float tx, float ty, float dz=0, int side=0, int puls=0, int id=-1)
Definition: EdbView.h:231
Int_t Nclusters() const
Definition: EdbView.h:215
EdbCluster * GetCluster(int i) const
Definition: EdbView.h:218
float ZBase
Definition: bitview.h:69
void ImproveTracksArray(TObjArray *tracks, int thr, float accept)
Definition: bitview.cxx:655
void FillByteArray(TBitView *Tv)
Definition: bitview.cxx:604
TObjArray * FindBinTracks(int thr)
Definition: bitview.cxx:633
float GetZ(void)
Definition: bitmatrix.h:37
void FillBitView(EdbView *view, float sx, float sy, float Xmin, float Xmax, float Ymin, float Ymax, int inside=1, int rep=1)
Definition: bitview.cxx:407
TBitMatrix * GetLayer(int n)
Definition: bitview.cxx:401
int GetNumberOfLayers(void)
Definition: bitview.h:47
float bitSize
Definition: bitview.h:35
TTree * t
Definition: check_shower.C:4
s
Definition: check_shower.C:55
TTree * tracks
Definition: check_tr.C:19
ss
Definition: energy.C:62
Double_t Z
Definition: tlg2couples.C:104