+void AliTPCcalibAlign::ProcessDiff(const AliExternalTrackParam &t1,
+ const AliExternalTrackParam &t2,
+ const AliTPCseed *seed,
+ Int_t s1,Int_t s2)
+{
+ //
+ // Process local residuals function
+ //
+ TVectorD vecX(160);
+ TVectorD vecY(160);
+ TVectorD vecZ(160);
+ TVectorD vecClY(160);
+ TVectorD vecClZ(160);
+ TClonesArray arrCl("AliTPCclusterMI",160);
+ arrCl.ExpandCreateFast(160);
+ Int_t count1=0, count2=0;
+ for (Int_t i=0;i<160;++i) {
+ AliTPCclusterMI *c=seed->GetClusterPointer(i);
+ vecX[i]=0;
+ vecY[i]=0;
+ vecZ[i]=0;
+ if (!c) continue;
+ AliTPCclusterMI & cl = (AliTPCclusterMI&) (*arrCl[i]);
+ if (c->GetDetector()!=s1 && c->GetDetector()!=s2) continue;
+ vecClY[i] = c->GetY();
+ vecClZ[i] = c->GetZ();
+ cl=*c;
+ const AliExternalTrackParam *par = (c->GetDetector()==s1)? &t1:&t2;
+ if (c->GetDetector()==s1) ++count1;
+ if (c->GetDetector()==s2) ++count2;
+ Double_t gxyz[3],xyz[3];
+ t1.GetXYZ(gxyz);
+ Float_t bz = AliTracker::GetBz(gxyz);
+ par->GetYAt(c->GetX(), bz, xyz[1]);
+ par->GetZAt(c->GetX(), bz, xyz[2]);
+ vecX[i] = c->GetX();
+ vecY[i]= xyz[1];
+ vecZ[i]= xyz[2];
+ }
+ //
+ //
+ if (fStreamLevel>5){
+ //
+ // huge output - cluster residuals to be investigated
+ //
+ TTreeSRedirector *cstream = GetDebugStreamer();
+ AliTPCseed * t = (AliTPCseed*) seed;
+ //AliExternalTrackParam *p0 = &((AliExternalTrackParam&)seed);
+ AliExternalTrackParam *p1 = &((AliExternalTrackParam&)t1);
+ AliExternalTrackParam *p2 = &((AliExternalTrackParam&)t2);
+
+ if (cstream){
+ (*cstream)<<"Track"<<
+ "Cl.="<<&arrCl<<
+ //"tp0.="<<p0<<
+ "tp1.="<<p1<<
+ "tp2.="<<p2<<
+ "vtX.="<<&vecX<<
+ "vtY.="<<&vecY<<
+ "vtZ.="<<&vecZ<<
+ "vcY.="<<&vecClY<<
+ "vcZ.="<<&vecClZ<<
+ "s1="<<s1<<
+ "s2="<<s2<<
+ "c1="<<count1<<
+ "c2="<<count2<<
+ "\n";
+ }
+ }
+}
+
+
+
+