ROOT logo
/**************************************************************************
 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 *                                                                        *
 * Author: The ALICE Off-line Project.                                    *
 * Contributors are mentioned in the code where appropriate.              *
 *                                                                        *
 * Permission to use, copy, modify and distribute this software and its   *
 * documentation strictly for non-commercial purposes is hereby granted   *
 * without fee, provided that the above copyright notice appears in all   *
 * copies and that both the copyright notice and this permission notice   *
 * appear in the supporting documentation. The authors make no claims     *
 * about the suitability of this software for any purpose. It is          *
 * provided "as is" without express or implied warranty.                  *
 **************************************************************************/

/* $Id$ */

/// \ingroup macros
/// \file MUONSurveyCh8L.C
/// \brief Macro to process survey and photogrammetry data of chamber 8L
///  
///  Macro loads the survey data from .txt file using AliSurveyObj.
///  Macro MUONSurveyUtil.C is then loaded.
///
///  The transformations of the slats are obatained in 2 steps:
///  -  1. Fit a plane to the sticker targets -> psi, theta
///  -  2. Using above psi in theta obtain xc, yc, zc and phi by solving 
///        the equations from a local to global transformation of the
///        fixed button targets
///
///  Various histograms are filled and printed for monitoring.
///  MisAlignment object is then created.
/// 
/// \author Javier Castillo

#if !defined(__CINT__) || defined(__MAKECINT__)

#include "AliMUONGeometryTransformer.h"
#include "AliMUONGeometryMisAligner.h"

#include "AliSurveyObj.h"
#include "AliSurveyPoint.h"
#include "AliGeomManager.h"
#include "AliCDBManager.h"
#include "AliCDBMetaData.h"
#include "AliCDBId.h"

#include <TROOT.h>
#include <TGeoManager.h>
#include <TClonesArray.h>
#include <TObjArray.h>
#include <TObjString.h>
#include <TMath.h>
#include <TString.h>
#include <Riostream.h>
#include <TF2.h>
#include <TH2.h>
#include <TGraph2DErrors.h>
#include <TGraph.h>
#include <TVector3.h>
#include <TCanvas.h>
#include <TPad.h>
#include <TPostScript.h>
#include <TPaveLabel.h>
#include <TStyle.h>

#include <fstream>

#endif

Bool_t MatrixToAngles(const Double_t *rot, Double_t *angles);
Double_t eqPlane(Double_t *x, Double_t *par);
Double_t xpCenter(Double_t *x, Double_t *par);
Double_t xnCenter(Double_t *x, Double_t *par);
Double_t ypCenter(Double_t *x, Double_t *par);
Double_t ynCenter(Double_t *x, Double_t *par);
Double_t zpCenter(Double_t *x, Double_t *par);
Double_t znCenter(Double_t *x, Double_t *par);
Double_t phixpp(Double_t *x, Double_t *par);
Double_t phixpn(Double_t *x, Double_t *par);
Double_t phixnp(Double_t *x, Double_t *par);
Double_t phixnn(Double_t *x, Double_t *par);
Double_t phiypp(Double_t *x, Double_t *par);
Double_t phiypn(Double_t *x, Double_t *par);
Double_t phiynp(Double_t *x, Double_t *par);
Double_t phiynn(Double_t *x, Double_t *par);
AliMUONGeometryTransformer *ReAlign(const AliMUONGeometryTransformer * transformer, 
				    int rMod, TGeoCombiTrans deltaDetElemTransf[], Bool_t verbose);
void MUONSurveyCh8L() {
  
  char str[100];
  char filename[100];
  
  int saveps = 1;
  const int cWidth = (int)(700*(29./21.));
  const int cHeight = 700;
//   const int   lineColor = 1;
//   const int   fillColor = 4;
//   const int   filetype  = 111; // portrait  
  const int   filetype  = 112; // landscape  
  
  sprintf(filename,"surveyChamber8L.ps");
  
  Int_t nSlats = 13;

  gROOT->LoadMacro("MUONSurveyUtil.C+");

  AliSurveyObj *so = new AliSurveyObj();
  
  Int_t size = so->GetEntries();
  printf("-> %d\n", size);
  
  so->FillFromLocalFile("Alice_MuonSystem_Chamber8LCavern_3561b.txt");
  size = so->GetEntries();
  printf("--> %d\n", size);

  Printf("Title: \"%s\"", so->GetReportTitle().Data());
  Printf("Date: \"%s\"", so->GetReportDate().Data());
  Printf("Detector: \"%s\"", so->GetDetector().Data());
  Printf("URL: \"%s\"", so->GetURL().Data());
  Printf("Number: \"%d\"", so->GetReportNumber());
  Printf("Version: \"%d\"", so->GetReportVersion());
  Printf("Observations: \"%s\"", so->GetObservations().Data());
  Printf("Coordinate System: \"%s\"", so->GetCoordSys().Data());
  Printf("Measurement Units: \"%s\"", so->GetUnits().Data());
  Printf("Nr Columns: \"%d\"", so->GetNrColumns());

  TObjArray *colNames = so->GetColumnNames();
  for (Int_t i = 0; i < colNames->GetEntries(); ++i)
    Printf("  Column %d --> \"%s\"", i, ((TObjString *) colNames->At(i))->GetString().Data());

  // Get Array of surveyed points
  Printf("Points:");
  TObjArray *points = so->GetData();
  
  for (Int_t i = 0; i < points->GetEntries(); ++i)
    Printf("  Point %d --> \"%s\"  %s ", i, ((AliSurveyPoint *) points->At(i))->GetPointName().Data(), points->At(i)->GetName());


  // Slats (#1 - #13) button targets local coordinates
  Double_t lSBTLoc6[13][2][3] = {{{  -412.50,  0.0, -(11.75+ 8.20+20.00)},
				  {   412.50,  0.0, -(11.75+16.50+20.00)}},
				 {{  -612.50,  0.0,  (11.75+ 8.20+20.00)}, 
				  {   612.50,  0.0,  (11.75+16.50+20.00)}},
				 {{ - 812.50,  0.0, -(11.75+ 8.20+20.00)}, 
				  {   812.50,  0.0, -(11.75+16.50+20.00)}},
				 {{ -1012.50,  0.0,  (11.75+ 8.20+20.00)}, 
				  {  1012.50,  0.0,  (11.75+16.50+20.00)}},
				 {{ -1012.50,  0.0, -(11.75+ 8.20+20.00)}, 
				  {  1012.50,  0.0, -(11.75+16.50+20.00)}},
				 {{ -1212.50,  5.0,  (11.75+ 8.20+20.00)}, 
				  {  1212.50,  0.0,  (11.75+16.50+20.00)}},
				 {{ -1012.50,  0.0, -(11.75+ 8.20+20.00)}, 
				  {  1012.50,  0.0, -(11.75+16.50+20.00)}},
				 {{ -1212.50,  5.0,  (11.75+ 8.20+20.00)}, 
				  {  1212.50,  0.0,  (11.75+16.50+20.00)}},
				 {{ -1012.50,  0.0, -(11.75+ 8.20+20.00)}, 
				  {  1012.50,  0.0, -(11.75+16.50+20.00)}},
				 {{ -1012.50,  0.0,  (11.75+ 8.20+20.00)}, 
				  {  1012.50,  0.0,  (11.75+16.50+20.00)}},
				 {{  -812.50,  0.0, -(11.75+ 8.20+20.00)}, 
				  {   812.50,  0.0, -(11.75+16.50+20.00)}},
				 {{  -612.50,  0.0,  (11.75+ 8.20+20.00)}, 
				  {   612.50,  0.0,  (11.75+16.50+20.00)}},
				 {{  -412.50,  0.0, -(11.75+ 8.20+20.00)},
				  {   412.50,  0.0, -(11.75+16.50+20.00)}}};
						    
  
  AliSurveyPoint *pointSST = 0;
  AliSurveyPoint *pointCST = 0;
  AliSurveyPoint *pointCPST = 0;
  AliSurveyPoint **pointSBT = new AliSurveyPoint*[2];
  
  char sPointName[10] = "5000"; 
  
  // Print length of slats 
  cout << "Slat lengths:" << endl;
  TVector3 vTemp(0., 0., 0.);
  TVector3 vSBT(0., 0., 0.);

  for (Int_t iSlat=0; iSlat<nSlats; iSlat++){
    // Get button targets survey points
    vTemp.SetXYZ(0., 0., 0.);
    if (iSlat+1<10) {
      sprintf(sPointName,"60%d%d",iSlat+1,1);
      pointSBT[0] = (AliSurveyPoint *)points->FindObject(sPointName);
      if(!pointSBT[0]) {
	cout << "Error! No button targets ... " << endl;
	break;
      }
      vSBT.SetXYZ(pointSBT[0]->GetX(),pointSBT[0]->GetY(),pointSBT[0]->GetZ());
      vTemp+=vSBT;
      sprintf(sPointName,"60%d%d",iSlat+1,2);
      pointSBT[1] = (AliSurveyPoint *)points->FindObject(sPointName);
      if(!pointSBT[1]) {
	cout << "Error! No button targets ... " << endl;
	break;
      }
      vSBT.SetXYZ(pointSBT[1]->GetX(),pointSBT[1]->GetY(),pointSBT[1]->GetZ());
      vTemp-=vSBT;
    }
    else {
      sprintf(sPointName,"6%d%d",iSlat+1,1);
      pointSBT[0] = (AliSurveyPoint *)points->FindObject(sPointName);
      if(!pointSBT[0]) {
	cout << "Error! No button targets ... " << endl;
	break;
      }
      vSBT.SetXYZ(pointSBT[0]->GetX(),pointSBT[0]->GetY(),pointSBT[0]->GetZ());
      vTemp+=vSBT;
      sprintf(sPointName,"6%d%d",iSlat+1,2);
      pointSBT[1] = (AliSurveyPoint *)points->FindObject(sPointName);
      if(!pointSBT[1]) {
	cout << "Error! No button targets ... " << endl;
	break;
      }
      vSBT.SetXYZ(pointSBT[1]->GetX(),pointSBT[1]->GetY(),pointSBT[1]->GetZ());
      vTemp-=vSBT;
    }
    cout << "Slat " << iSlat+1 << ": " << vTemp.Mag() << endl;
  }
 
  // Histograms for monitoring
  TH2F *hCPSTry = new TH2F("hCPSTry","hCPSTry",28,-600,2200,52,0,5200);
  TH2F *hCPSTly = new TH2F("hCPSTly","hCPSTly",28,-600,2200,52,0,5200);
  TH2F *hSSTry = new TH2F("hSSTry","hSSTry",70,-600,2200,130,0,5200);
  TH2F *hSSTly = new TH2F("hSSTly","hSSTly",70,-600,2200,130,0,5200);
  TH2F *hCSTy = new TH2F("hCSTy","hCSTy",70,-600,2200,130,0,5200);
  TH2F *hSSTrpy = new TH2F("hSSTrpy","hSSTrpy",70,-600,2200,130,0,5200); 
  TH2F *hSSTlpy = new TH2F("hSSTlpy","hSSTlpy",70,-600,2200,130,0,5200); 

  // Chamber plane sticker targets
  for (int iPoint=0; iPoint<9; iPoint++) {
    sprintf(sPointName,"700%d",iPoint+1);
    pointCPST = (AliSurveyPoint *)points->FindObject(sPointName);
    if(!pointCPST) {
      printf("Point %s is missing ...\n",sPointName);
      break;       
    }
    hCPSTry->Fill(pointCPST->GetX(),pointCPST->GetZ(),pointCPST->GetY());
  }
  for (int iPoint=9; iPoint<18; iPoint++) {
    sprintf(sPointName,"70%d",iPoint+1);
    pointCPST = (AliSurveyPoint *)points->FindObject(sPointName);
    if(!pointCPST) {
      printf("Point %s is missing ...\n",sPointName);
      break;       
    }   
    hCPSTly->Fill(pointCPST->GetX(),pointCPST->GetZ(),pointCPST->GetY());
  }

  // Chamber Side Targets
  for (int iPoint=0; iPoint<25; iPoint++) {
    if (iPoint+1<10) {   
      sprintf(sPointName,"800%d",iPoint+1);
    }
    else {
      sprintf(sPointName,"80%d",iPoint+1);
    }
    pointCST = (AliSurveyPoint *)points->FindObject(sPointName);
    if(!pointCPST) {
      printf("Point %s is missing ...\n",sPointName);
      break;
    }
    hCSTy->Fill(pointCST->GetX(),pointCST->GetZ(),pointCST->GetY());
  }

  
  // Graphs used for plane fitting
  TGraph2DErrors **gSST5 = new TGraph2DErrors*[nSlats];
  for(Int_t iSlat=0; iSlat<nSlats; iSlat++){
    gSST5[iSlat] = new TGraph2DErrors();
  }
  
  // Keep the id of slat sticker targets next to slat button targets
  Int_t iSSBT[13][2] = {{0}};
  
  // Fill graph with sticker target positions
  for (int iSlat=0; iSlat<nSlats; iSlat++){
    for (int iPoint=0; iPoint<9; iPoint++) {
      // Second sticker target is next to first button target
      // Previous to last sticker target is next to second button target
      iSSBT[iSlat][0] = 2;
      iSSBT[iSlat][1] = 8;
      if (iSlat+1<10) {
	sprintf(sPointName,"50%d%d",iSlat+1,iPoint+1);
      }
      else {
	sprintf(sPointName,"5%d%d",iSlat+1,iPoint+1);
      }
      pointSST = (AliSurveyPoint *)points->FindObject(sPointName);
      if(!pointSST) {
	printf("%s\n",sPointName);
	cout << iSlat << " " << iPoint  << " " << pointSST << endl;
	// Previous to last sticker target is next to second button target
	iSSBT[iSlat][1] = iPoint+1-2;
	break;
      }
     
      gSST5[iSlat]->SetPoint(iPoint,-pointSST->GetX(),pointSST->GetZ(),pointSST->GetY());
      gSST5[iSlat]->SetPointError(iPoint,pointSST->GetPrecisionX(),pointSST->GetPrecisionZ(),pointSST->GetPrecisionY());
      
      // Fill histograms of sticker targets. For monitoring purposes.
      if((iSlat+1)%2==0){
	hSSTly->Fill(pointSST->GetX(),pointSST->GetZ(),pointSST->GetY());
      }
      else {
	hSSTry->Fill(pointSST->GetX(),pointSST->GetZ(),pointSST->GetY());
      }
    }
  }

  Float_t xMin = -2200.;
  Float_t xMax =  2200.;
  Float_t yMin = -5200.;
  Float_t yMax =  5200.;
  Float_t zMin = -200.;
  Float_t zMax =  200.;

  Double_t xMinSlat, xMaxSlat;
  Double_t yMinSlat, yMaxSlat;  

  // Slat plane function
  char fsName[100] = "fSlat00"; 
  TF2 **fSlat = new TF2*[nSlats];
  for(Int_t iSlat=0; iSlat<nSlats; iSlat++){
    sprintf(fsName,"fSlat%d",iSlat+1);
    fSlat[iSlat] = new TF2(fsName,eqPlane,xMin,xMax,yMin,yMax,3);
  }

  // Xcenter functions
  char fxcName[100] = "fXcnSlat00"; 
  TF2 ***fXcSlat = new TF2**[nSlats];
  for(Int_t iSlat=0; iSlat<nSlats; iSlat++){
    fXcSlat[iSlat] = new TF2*[2];
    sprintf(fxcName,"fXcnSlat%d",iSlat+1);
    fXcSlat[iSlat][0] = new TF2(fxcName,xnCenter,xMin,xMax,yMin,yMax,7);
    sprintf(fxcName,"fXcpSlat%d",iSlat+1);
    fXcSlat[iSlat][1] = new TF2(fxcName,xpCenter,xMin,xMax,yMin,yMax,7);   
  }

  // Ycenter functions
  char fycName[100] = "fYcnSlat00"; 
  TF2 ***fYcSlat = new TF2**[nSlats];
  for(Int_t iSlat=0; iSlat<nSlats; iSlat++){
    fYcSlat[iSlat] = new TF2*[2];
    sprintf(fycName,"fYcnSlat%d",iSlat+1);
    fYcSlat[iSlat][0] = new TF2(fycName,ynCenter,yMin,yMax,yMin,yMax,8);
    sprintf(fycName,"fYcpSlat%d",iSlat+1);
    fYcSlat[iSlat][1] = new TF2(fycName,ypCenter,yMin,yMax,yMin,yMax,8);   
  }

  // Zcenter functions
  char fzcName[100] = "fZcnSlat00"; 
  TF2 ***fZcSlat = new TF2**[nSlats];
  for(Int_t iSlat=0; iSlat<nSlats; iSlat++){
    fZcSlat[iSlat] = new TF2*[2];
    sprintf(fzcName,"fZcnSlat%d",iSlat+1);
    fZcSlat[iSlat][0] = new TF2(fzcName,znCenter,zMin,zMax,zMin,zMax,8);
    sprintf(fzcName,"fZcpSlat%d",iSlat+1);
    fZcSlat[iSlat][1] = new TF2(fzcName,zpCenter,zMin,zMax,zMin,zMax,8);   
  }

  // Phi rotation using xglobal coords functions
  char fphixName[100] = "fPhiXnnSlat00"; 
  TF2 ****fPhiXSlat = new TF2***[nSlats];
  for(Int_t iSlat=0; iSlat<nSlats; iSlat++){
    fPhiXSlat[iSlat] = new TF2**[2];
    for (Int_t iX =0; iX<2; iX++)
      fPhiXSlat[iSlat][iX] = new TF2*[2];
    sprintf(fphixName,"fPhiXnnSlat%d",iSlat+1);
    fPhiXSlat[iSlat][0][0] = new TF2(fphixName,phixnn,xMin,xMax,xMin,xMax,7);
    sprintf(fphixName,"fPhixnpSlat%d",iSlat+1);
    fPhiXSlat[iSlat][0][1] = new TF2(fphixName,phixnp,xMin,xMax,xMin,xMax,7);   
    sprintf(fphixName,"fPhiXpnSlat%d",iSlat+1);
    fPhiXSlat[iSlat][1][0] = new TF2(fphixName,phixpn,xMin,xMax,xMin,xMax,7);
    sprintf(fphixName,"fPhixppSlat%d",iSlat+1);
    fPhiXSlat[iSlat][1][1] = new TF2(fphixName,phixpp,xMin,xMax,xMin,xMax,7);   
  }

  // Phi rotation using yglobal coords functions
  char fphiyName[100] = "fPhiYnnSlat00"; 
  TF2 ****fPhiYSlat = new TF2***[nSlats];
  for(Int_t iSlat=0; iSlat<nSlats; iSlat++){
    fPhiYSlat[iSlat] = new TF2**[2];
    for (Int_t iY =0; iY<2; iY++)
      fPhiYSlat[iSlat][iY] = new TF2*[2];
    sprintf(fphiyName,"fPhiYnnSlat%d",iSlat+1);
    fPhiYSlat[iSlat][0][0] = new TF2(fphiyName,phiynn,yMin,yMax,yMin,yMax,7);
    sprintf(fphiyName,"fPhiYnpSlat%d",iSlat+1);
    fPhiYSlat[iSlat][0][1] = new TF2(fphiyName,phiynp,yMin,yMax,yMin,yMax,7);   
    sprintf(fphiyName,"fPhiYpnSlat%d",iSlat+1);
    fPhiYSlat[iSlat][1][0] = new TF2(fphiyName,phiypn,yMin,yMax,yMin,yMax,7);
    sprintf(fphiyName,"fPhiYppSlat%d",iSlat+1);
    fPhiYSlat[iSlat][1][1] = new TF2(fphiyName,phiypp,yMin,yMax,yMin,yMax,7);   
  }

//   Double_t *xce = new Double_t[nSlats]; 
//   Double_t *yce = new Double_t[nSlats]; 
//   Double_t *zce = new Double_t[nSlats]; 
  Double_t *psi = new Double_t[nSlats]; 
  Double_t *tht = new Double_t[nSlats]; 
//   Double_t *phi = new Double_t[nSlats]; 

  Double_t **lCenSlat = new Double_t*[nSlats];
  Double_t **lRotSlat = new Double_t*[nSlats];
  Double_t **lDiffCenSlat0 = new Double_t*[nSlats];
  Double_t **lDiffRotSlat0 = new Double_t*[nSlats];
  Double_t **lDiffThCenSlat0 = new Double_t*[nSlats];
  Double_t **lDiffThRotSlat0 = new Double_t*[nSlats];
  Double_t **lDeltaDiffCenSlat0 = new Double_t*[nSlats];
  Double_t **lDeltaDiffRotSlat0 = new Double_t*[nSlats];

  for (int iSlat=0; iSlat<nSlats; iSlat++) {
    lCenSlat[iSlat] = new Double_t[3];
    lRotSlat[iSlat] = new Double_t[3];

    lDiffCenSlat0[iSlat] = new Double_t[3];
    lDiffRotSlat0[iSlat] = new Double_t[3];
    lDiffThCenSlat0[iSlat] = new Double_t[3];
    lDiffThRotSlat0[iSlat] = new Double_t[3];
    lDeltaDiffCenSlat0[iSlat] = new Double_t[3];
    lDeltaDiffRotSlat0[iSlat] = new Double_t[3];
  }


  TGeoTranslation transSlat[nSlats];
  TGeoRotation rotSlat[nSlats];
  TGeoCombiTrans trfSlat[nSlats];

  TGeoTranslation dtransSlat[nSlats];
  TGeoRotation drotSlat[nSlats];
  TGeoCombiTrans dtrfSlat[nSlats];

  TGeoTranslation transTemp;
  TGeoRotation rotTemp;
  TGeoCombiTrans trfTemp;


  Double_t lCenTemp[3];
  Double_t lRotTemp[3];

  Double_t lDiffTemp[9];
  Double_t lDiffMin[9];

  double tempDiff = 0.;
  double tempDiff1 = 0.;
  double tempDiff2 = 0.;

  AliSurveyPoint **pointSSBT = new AliSurveyPoint*[2];

  //
  // Get Slat transformation. 
  // Psi and Theta are obtained by fitting a plane to the sticker targets.
  // Then Xc, Yc, Zc and Phi are obtained by solving the equations to the ref.
  // syst. transformation of the button targets
  //
  for (int iSlat=0; iSlat<nSlats; iSlat++) {
    sprintf(fsName,"fSlat%d",iSlat+1);
    cout << "Fitting Slat" << iSlat+1 << " ..." << endl;

    // Fit a plane to the sticker targets
    gSST5[iSlat]->Fit(fsName,"","same");

    psi[iSlat] = TMath::ATan(fSlat[iSlat]->GetParameter(1));
    tht[iSlat] = TMath::ATan(fSlat[iSlat]->GetParameter(0));
    if (iSlat==5)
      psi[iSlat] += TMath::Pi(); // Rotated slat

    lRotSlat[iSlat][0] = psi[iSlat];
    lRotSlat[iSlat][1] = tht[iSlat];

    for(Int_t iS=0; iS<2; iS++){
      fXcSlat[iSlat][iS]->SetParameters(lSBTLoc6[iSlat][0][0],lSBTLoc6[iSlat][0][1],lSBTLoc6[iSlat][0][2],lSBTLoc6[iSlat][1][0],lSBTLoc6[iSlat][1][1],lSBTLoc6[iSlat][1][2],tht[iSlat]);
      fYcSlat[iSlat][iS]->SetParameters(lSBTLoc6[iSlat][0][0],lSBTLoc6[iSlat][0][1],lSBTLoc6[iSlat][0][2],lSBTLoc6[iSlat][1][0],lSBTLoc6[iSlat][1][1],lSBTLoc6[iSlat][1][2],psi[iSlat],tht[iSlat]);
      fZcSlat[iSlat][iS]->SetParameters(lSBTLoc6[iSlat][0][0],lSBTLoc6[iSlat][0][1],lSBTLoc6[iSlat][0][2],lSBTLoc6[iSlat][1][0],lSBTLoc6[iSlat][1][1],lSBTLoc6[iSlat][1][2],psi[iSlat],tht[iSlat]);
      for(Int_t jS=0; jS<2; jS++){
	fPhiXSlat[iSlat][iS][jS]->SetParameters(lSBTLoc6[iSlat][0][0],lSBTLoc6[iSlat][0][1],lSBTLoc6[iSlat][0][2],lSBTLoc6[iSlat][1][0],lSBTLoc6[iSlat][1][1],lSBTLoc6[iSlat][1][2],tht[iSlat]);
	fPhiYSlat[iSlat][iS][jS]->SetParameters(lSBTLoc6[iSlat][0][0],lSBTLoc6[iSlat][0][1],lSBTLoc6[iSlat][0][2],lSBTLoc6[iSlat][1][0],lSBTLoc6[iSlat][1][1],lSBTLoc6[iSlat][1][2],psi[iSlat],tht[iSlat]);
      }
    }

    //
    // Calculate Slat Center from button targets
    //

    // Get button targets survey points
    for (Int_t iPoint=0; iPoint<2; iPoint++) {
      if (iSlat+1<10) {
	sprintf(sPointName,"60%d%d",iSlat+1,iPoint+1);
	pointSBT[iPoint] = (AliSurveyPoint *)points->FindObject(sPointName);
	if(!pointSBT[iPoint]) {
	  cout << "Error! No button targets ... " << endl;
	  break;       
	}
	sprintf(sPointName,"50%d%d",iSlat+1,iSSBT[iSlat][iPoint]);
	pointSSBT[iPoint] = (AliSurveyPoint *)points->FindObject(sPointName);
	if(!pointSSBT[iPoint]) {
	  cout << "Error! No sticker target ... " << sPointName << endl;
	  break;       
	}
      }
      else {
	sprintf(sPointName,"6%d%d",iSlat+1,iPoint+1);
	pointSBT[iPoint] = (AliSurveyPoint *)points->FindObject(sPointName);
	if(!pointSBT[iPoint]) {
	  cout << "Error! No button targets ... " << endl;
	  break;
	}
	sprintf(sPointName,"5%d%d",iSlat+1,iSSBT[iSlat][iPoint]);
	pointSSBT[iPoint] = (AliSurveyPoint *)points->FindObject(sPointName);
	if(!pointSSBT[iPoint]) {
	  cout << "Error! No sticker targets ... " << sPointName << endl;
	  break;
	}
      }
    }

    tempDiff += TMath::Power(-1,iSlat)*((pointSBT[1]->GetY() - pointSSBT[1]->GetY())-(pointSBT[0]->GetY() - pointSSBT[0]->GetY()));
    tempDiff1 += TMath::Abs(pointSBT[0]->GetY() - pointSSBT[0]->GetY())-20;
    tempDiff2 += TMath::Abs(pointSBT[1]->GetY() - pointSSBT[1]->GetY())-20;
    cout << "BSdiff: " << TMath::Abs(pointSBT[0]->GetY() - pointSSBT[0]->GetY()) << " " << TMath::Abs(pointSBT[1]->GetY() - pointSSBT[1]->GetY()) << " " << tempDiff1/(iSlat+1) << " " << tempDiff2/(iSlat+1) << " " << tempDiff/(iSlat+1) << endl;


    //    Double_t p0l[3] = {0};
    Double_t p1l[3] = {0};
    Double_t p2l[3] = {0};
    //    Double_t p0g[3] = {0};
    Double_t p1g[3] = {0};
    Double_t p2g[3] = {0};

    //    p0l[2] = lSBTLoc6[iSlat][0][2];
    // Button targets local coordinates
    for(Int_t iCor=0; iCor<3; iCor++){
      p1l[iCor]= lSBTLoc6[iSlat][0][iCor];
      p2l[iCor]= lSBTLoc6[iSlat][1][iCor];
    }
    for(Int_t i=0; i<9; i++){
      lDiffMin[i]=1000000.;
    }
    // Trying 2x*2y*2z*2phi possibilities
    for(Int_t iX=0; iX<2; iX++){
      for(Int_t iY=0; iY<2; iY++){
	for(Int_t iZ=0; iZ<2; iZ++){
	  lCenTemp[0] = fXcSlat[iSlat][iX]->Eval(-pointSBT[0]->GetX(),-pointSBT[1]->GetX());
	  lCenTemp[1] = fYcSlat[iSlat][iY]->Eval(pointSBT[0]->GetZ(),pointSBT[1]->GetZ());
	  lCenTemp[2] = fZcSlat[iSlat][iZ]->Eval(pointSBT[0]->GetY(),pointSBT[1]->GetY());
	  //	 lCenTemp[2] = fZcSlat[iSlat][iZ]->Eval(pointSSBT[0]->GetY(),pointSSBT[1]->GetY());
	  lRotTemp[0] = psi[iSlat];
	  lRotTemp[1] = tht[iSlat];
	  for(Int_t iP=0; iP<2; iP++){
	    lRotTemp[2] = fPhiXSlat[iSlat][iX][iP]->Eval(-pointSBT[0]->GetX(),-pointSBT[1]->GetX());

	    trfTemp.SetTranslation(transTemp);
	    trfTemp.SetRotation(rotTemp);
	    trfTemp.Clear();
	    trfTemp.RotateZ(TMath::RadToDeg()*lRotTemp[2]);
	    trfTemp.RotateY(TMath::RadToDeg()*lRotTemp[1]);
	    trfTemp.RotateX(TMath::RadToDeg()*lRotTemp[0]);
	    trfTemp.SetTranslation(lCenTemp);
	   
	    // 	   trfTemp.LocalToMaster(p0l, p0g);
	    // 	   lCenTemp[2]= fSlat[iSlat]->Eval(p0g[0],p0g[1]) - trfTemp.GetRotationMatrix()[8]*p0l[2];
	    // 	   trfTemp.SetTranslation(lCenTemp);

	    trfTemp.LocalToMaster(p1l, p1g);
	    trfTemp.LocalToMaster(p2l, p2g);
	   
	    lDiffTemp[0] = (-pointSBT[0]->GetX()-p1g[0]);
	    lDiffTemp[1] = (pointSBT[0]->GetZ()-p1g[1]);
	    lDiffTemp[2] = (pointSBT[0]->GetY()-p1g[2]);
	    //	   lDiffTemp[2] = (pointSSBT[0]->GetY()-p1g[2]);
	    lDiffTemp[3] = TMath::Sqrt(lDiffTemp[0]*lDiffTemp[0]+lDiffTemp[1]*lDiffTemp[1]+lDiffTemp[2]*lDiffTemp[2]);	   
	    lDiffTemp[4] = (-pointSBT[1]->GetX()-p2g[0]);
	    lDiffTemp[5] = (pointSBT[1]->GetZ()-p2g[1]);
	    lDiffTemp[6] = (pointSBT[1]->GetY()-p2g[2]);
	    //	   lDiffTemp[6] = (pointSSBT[1]->GetY()-p2g[2]);
	    lDiffTemp[7] = TMath::Sqrt(lDiffTemp[4]*lDiffTemp[4]+lDiffTemp[5]*lDiffTemp[5]+lDiffTemp[6]*lDiffTemp[6]);
	    lDiffTemp[8] = TMath::Sqrt(lDiffTemp[3]*lDiffTemp[3]+lDiffTemp[7]*lDiffTemp[7]);
	   
	    if(lDiffTemp[8]<lDiffMin[8]){
	      cout << "Diffs" ;
	      for(Int_t i=0; i<9; i++){
		cout << " " << lDiffTemp[i]; 
	      }
	      cout << endl;
	      cout << "Slat" << iSlat+1 << " : mycenX" << iX << "Y" << iY << "Z" << iZ << "(" << lCenTemp[0] << "," << lCenTemp[1] << "," << lCenTemp[2] << "); rotx" << iP << "(" << lRotTemp[0] << "," << lRotTemp[1] << "," << lRotTemp[2] << ")"  << endl;  	   
	      cout << p1g[0] << " " << p1g[1] << " " << p1g[2] << " " << p2g[0] << " " << p2g[1] << " " << p2g[2] << endl;
	      cout << "Transformation improved ..." << endl;
	      lCenSlat[iSlat][0] = lCenTemp[0]; lCenSlat[iSlat][1] = lCenTemp[1]; lCenSlat[iSlat][2] = lCenTemp[2]; 
	      lRotSlat[iSlat][2] = lRotTemp[2];
	      for(Int_t i=0; i<9; i++){
		lDiffMin[i]=lDiffTemp[i];
	      }
	      if((lDiffMin[3]*lDiffMin[3]<0.1*0.1+0.1*0.1+0.1*0.1)&&
		 (lDiffMin[7]*lDiffMin[7]<0.1*0.1+0.1*0.1+0.1*0.1)){
		cout << "Correct Transformation found X " << iX  << " Y " << iY << " Z " << iZ << " xP " << iP << endl;
		lCenSlat[iSlat][0] = lCenTemp[0]; lCenSlat[iSlat][1] = lCenTemp[1]; lCenSlat[iSlat][2] = lCenTemp[2]; 
		lRotSlat[iSlat][2] = lRotTemp[2];
	      }
	    }
	  }
	  for(Int_t iP=0; iP<2; iP++){
	    lRotTemp[2] = fPhiYSlat[iSlat][iY][iP]->Eval(pointSBT[0]->GetZ(),pointSBT[1]->GetZ());
	    Double_t lPhi = TMath::ATan2((pointSBT[1]->GetZ()-pointSBT[0]->GetZ()),-(pointSBT[1]->GetX()-pointSBT[0]->GetX()));
	   
	    trfTemp.Clear();
	    trfTemp.RotateZ(TMath::RadToDeg()*lRotTemp[2]);
	    trfTemp.RotateY(TMath::RadToDeg()*lRotTemp[1]);
	    trfTemp.RotateX(TMath::RadToDeg()*lRotTemp[0]);
	    trfTemp.SetTranslation(lCenTemp);

	    // 	   trfTemp.LocalToMaster(p0l, p0g);
	    // 	   lCenTemp[2]= fSlat[iSlat]->Eval(p0g[0],p0g[1]) - trfTemp.GetRotationMatrix()[8]*p0l[2];
	    // 	   trfTemp.SetTranslation(lCenTemp);
	   
	    trfTemp.LocalToMaster(p1l, p1g);
	    trfTemp.LocalToMaster(p2l, p2g);

	    lDiffTemp[0] = (-pointSBT[0]->GetX()-p1g[0]);
	    lDiffTemp[1] = (pointSBT[0]->GetZ()-p1g[1]);	
	    lDiffTemp[2] = (pointSBT[0]->GetY()-p1g[2]);
	    //	   lDiffTemp[2] = (pointSSBT[0]->GetY()-p1g[2]);
	    lDiffTemp[3] = TMath::Sqrt(lDiffTemp[0]*lDiffTemp[0]+lDiffTemp[1]*lDiffTemp[1]+lDiffTemp[2]*lDiffTemp[2]);	   
	    lDiffTemp[4] = (-pointSBT[1]->GetX()-p2g[0]);
	    lDiffTemp[5] = (pointSBT[1]->GetZ()-p2g[1]);	
	    lDiffTemp[6] = (pointSBT[1]->GetY()-p2g[2]);
	    //	   lDiffTemp[6] = (pointSSBT[1]->GetY()-p2g[2]);
	    lDiffTemp[7] = TMath::Sqrt(lDiffTemp[4]*lDiffTemp[4]+lDiffTemp[5]*lDiffTemp[5]+lDiffTemp[6]*lDiffTemp[6]);
	    lDiffTemp[8] = TMath::Sqrt(lDiffTemp[3]*lDiffTemp[3]+lDiffTemp[7]*lDiffTemp[7]);
	   
	    if(lDiffTemp[8]<lDiffMin[8]){
	      cout << "Diffs" ;
	      for(Int_t i=0; i<9; i++){
		cout << " " << lDiffTemp[i]; 
	      }
	      cout << endl;	     
	      cout << "Slat" << iSlat+1 << " : mycenX" << iX << "Y" << iY << "Z" << iZ << "(" << lCenTemp[0] << "," << lCenTemp[1] << "," << lCenTemp[2] << "); roty" << iP << "(" << lRotTemp[0] << "," << lRotTemp[1] << "," << lRotTemp[2] << "(" << lPhi << "))"  << endl;
	      cout << p1g[0] << " " << p1g[1] << " " << p1g[2] << " " << p2g[0] << " " << p2g[1] << " " << p2g[2] << endl;	     
	      cout << "Transformation improved ..." << endl;
	      lCenSlat[iSlat][0] = lCenTemp[0]; lCenSlat[iSlat][1] = lCenTemp[1]; lCenSlat[iSlat][2] = lCenTemp[2]; 
	      lRotSlat[iSlat][2] = lRotTemp[2];

	      for(Int_t i=0; i<9; i++){
		lDiffMin[i]=lDiffTemp[i];
	      }
	      if((lDiffMin[3]*lDiffMin[3]<0.1*0.1+0.1*0.1+0.1*0.1)&&
		 (lDiffMin[7]*lDiffMin[7]<0.1*0.1+0.1*0.1+0.1*0.1)){
		cout << "Correct Transformation found X " << iX  << " Y " << iY << " Z " << iZ << " yP " << iP << endl;
		lCenSlat[iSlat][0] = lCenTemp[0]; lCenSlat[iSlat][1] = lCenTemp[1]; lCenSlat[iSlat][2] = lCenTemp[2]; 
		lRotSlat[iSlat][2] = lRotTemp[2];
	      }
	    }
	  } 
	} 
      } 
    }

    // Fill slat plane for fit monitor.
    xMinSlat = hSSTrpy->GetXaxis()->FindBin(pointSBT[0]->GetX()); 
    xMaxSlat = hSSTrpy->GetXaxis()->FindBin(pointSBT[1]->GetX()); 
    yMinSlat = hSSTrpy->GetYaxis()->FindBin(pointSBT[0]->GetZ()-200.); 
    yMaxSlat = hSSTrpy->GetYaxis()->FindBin(pointSBT[0]->GetZ()+200.); 
   
    for (int i=(int)xMinSlat; i<=(int)xMaxSlat; i++) {
      for (int j=(int)yMinSlat; j<=(int)yMaxSlat; j++) {
	Double_t zSlat = fSlat[iSlat]->Eval(-hSSTrpy->GetXaxis()->GetBinCenter(i),
					    hSSTrpy->GetYaxis()->GetBinCenter(j));
	if((iSlat+1)%2==0){
	  hSSTlpy->SetBinContent(i,j,zSlat);
	}
	else {
	  hSSTrpy->SetBinContent(i,j,zSlat);
	}
      }
    }   
  }

  //
  // Compare transformations to expected ones 
  //
  Int_t iSlatToPos[13] = {0, 11, 2, 9, 4, 7, 6, 5, 8, 3, 10, 1, 12};
 
  // Theoretical differences with respect to Slat 513 which is here Slat07
  lDiffThCenSlat0[0][0]  = (2-5)*400./2. +12.5 -375. -25.;
  lDiffThCenSlat0[1][0]  = (3-5)*400./2. +12.5 -375. -25.;
  lDiffThCenSlat0[2][0]  = (4-5)*400./2. +12.5 -375. -25.;
  lDiffThCenSlat0[3][0]  = (5-5)*400./2. +12.5 -375. -25.;
  lDiffThCenSlat0[4][0]  = (5-5)*400./2. +12.5 -375. -25.;
  lDiffThCenSlat0[5][0]  = (6-5)*400./2. +12.5 -375. -25.;
  lDiffThCenSlat0[6][0]  = (5-5)*400./2. +12.5 -375. -25. +375. +25. -12.5;
  lDiffThCenSlat0[7][0]  = (6-5)*400./2. +12.5 -375. -25.;
  lDiffThCenSlat0[8][0]  = (5-5)*400./2. +12.5 -375. -25.;
  lDiffThCenSlat0[9][0]  = (5-5)*400./2. +12.5 -375. -25.;
  lDiffThCenSlat0[10][0] = (4-5)*400./2. +12.5 -375. -25.;
  lDiffThCenSlat0[11][0] = (3-5)*400./2. +12.5 -375. -25.;
  lDiffThCenSlat0[12][0] = (2-5)*400./2. +12.5 -375. -25.;

  lDiffThCenSlat0[12][1] = 382.0 +378.5 +375.5 +294.0 +370.0 +286.0; 
  lDiffThCenSlat0[1][1]  = 382.0 +378.5 +375.5 +294.0 +370.0; 
  lDiffThCenSlat0[10][1] = 382.0 +378.5 +375.5 +294.0; 
  lDiffThCenSlat0[3][1]  = 382.0 +378.5 +375.5; 
  lDiffThCenSlat0[8][1]  = 382.0 +378.5; 
  lDiffThCenSlat0[5][1]  = 382.0; 
  lDiffThCenSlat0[6][1]  = 0.0; 
  lDiffThCenSlat0[7][1]  = -382.0; 
  lDiffThCenSlat0[4][1]  = -382.0 -378.5; 
  lDiffThCenSlat0[9][1]  = -382.0 -378.5 -375.5; 
  lDiffThCenSlat0[2][1]  = -382.0 -378.5 -375.5 -294.0; 
  lDiffThCenSlat0[11][1] = -382.0 -378.5 -375.5 -294.0 -370.0; 
  lDiffThCenSlat0[0][1]  = -382.0 -378.5 -375.5 -294.0 -370.0 -286.0; 

  lDiffThCenSlat0[12][2] =  (42.5)-(42.5); // (42.5-1.175)-(42.5-1.175);
  lDiffThCenSlat0[1][2]  = -(42.5)-(42.5); //-(42.5-1.175)-(42.5-1.175);
  lDiffThCenSlat0[10][2] =  (42.5)-(42.5); // (42.5-1.175)-(42.5-1.175);
  lDiffThCenSlat0[3][2]  = -(42.5)-(42.5); //-(42.5-1.175)-(42.5-1.175);
  lDiffThCenSlat0[8][2]  =  (42.5)-(42.5); // (42.5-1.175)-(42.5-1.175);
  lDiffThCenSlat0[5][2]  = -(42.5)-(42.5); //-(42.5-1.175)-(42.5-1.175);
  lDiffThCenSlat0[6][2]  =  (42.5)-(42.5); // (42.5-1.175)-(42.5-1.175);
  lDiffThCenSlat0[7][2]  = -(42.5)-(42.5); //-(42.5-1.175)-(42.5-1.175);
  lDiffThCenSlat0[4][2]  =  (42.5)-(42.5); // (42.5-1.175)-(42.5-1.175);
  lDiffThCenSlat0[9][2]  = -(42.5)-(42.5); //-(42.5-1.175)-(42.5-1.175);
  lDiffThCenSlat0[2][2]  =  (42.5)-(42.5); // (42.5-1.175)-(42.5-1.175);
  lDiffThCenSlat0[11][2] = -(42.5)-(42.5); //-(42.5-1.175)-(42.5-1.175);
  lDiffThCenSlat0[0][2]  =  (42.5)-(42.5); // (42.5-1.175)-(42.5-1.175);

  TGraph *gDeltaDiffCenXSlat0 = new TGraph(nSlats);
  TGraph *gDeltaDiffCenYSlat0 = new TGraph(nSlats);
  TGraph *gDeltaDiffCenZSlat0 = new TGraph(nSlats);
  TGraph *gDeltaDiffPsiSlat0 = new TGraph(nSlats);
  TGraph *gDeltaDiffThtSlat0 = new TGraph(nSlats);
  TGraph *gDeltaDiffPhiSlat0 = new TGraph(nSlats);

  for(Int_t iSlat=0; iSlat<nSlats; iSlat++){
    trfSlat[iSlat].SetTranslation(transSlat[iSlat]);
    trfSlat[iSlat].SetRotation(rotSlat[iSlat]);
    trfSlat[iSlat].Clear();
    trfSlat[iSlat].RotateZ(TMath::RadToDeg()*lRotSlat[iSlat][2]);
    trfSlat[iSlat].RotateY(TMath::RadToDeg()*lRotSlat[iSlat][1]);
    trfSlat[iSlat].RotateX(TMath::RadToDeg()*lRotSlat[iSlat][0]);
    trfSlat[iSlat].SetTranslation(lCenSlat[iSlat]); 
  }

  for(Int_t iSlat=0; iSlat<nSlats; iSlat++){
    dtrfSlat[iSlat].SetTranslation(dtransSlat[iSlat]);
    dtrfSlat[iSlat].SetRotation(drotSlat[iSlat]);
    dtrfSlat[iSlat].Clear();
    dtrfSlat[iSlat] = trfSlat[6].Inverse()*trfSlat[iSlat]; 
    dtrfSlat[iSlat].Print();
    lDiffCenSlat0[iSlat] = (Double_t*)dtrfSlat[iSlat].GetTranslation();
    MatrixToAngles(dtrfSlat[iSlat].GetRotationMatrix(),lDiffRotSlat0[iSlat]);

    lDeltaDiffCenSlat0[iSlat][0] = lDiffCenSlat0[iSlat][0]-lDiffThCenSlat0[iSlat][0];
    lDeltaDiffCenSlat0[iSlat][1] =  -lDiffCenSlat0[iSlat][1]-lDiffThCenSlat0[iSlat][1];
    lDeltaDiffCenSlat0[iSlat][2] =  -lDiffCenSlat0[iSlat][2]-lDiffThCenSlat0[iSlat][2];
    lDeltaDiffRotSlat0[iSlat][0] = lDiffRotSlat0[iSlat][0];
    lDeltaDiffRotSlat0[iSlat][1] = lDiffRotSlat0[iSlat][1];
    lDeltaDiffRotSlat0[iSlat][2] = lDiffRotSlat0[iSlat][2];
    gDeltaDiffCenXSlat0->SetPoint(iSlat,lDeltaDiffCenSlat0[iSlat][0],iSlatToPos[iSlat]+1);
    gDeltaDiffCenYSlat0->SetPoint(iSlat,lDeltaDiffCenSlat0[iSlat][1],iSlatToPos[iSlat]+1);
    gDeltaDiffCenZSlat0->SetPoint(iSlat,lDeltaDiffCenSlat0[iSlat][2],iSlatToPos[iSlat]+1);
    gDeltaDiffPsiSlat0->SetPoint(iSlat,1e3*lDeltaDiffRotSlat0[iSlat][0],iSlatToPos[iSlat]+1);
    gDeltaDiffThtSlat0->SetPoint(iSlat,1e3*lDeltaDiffRotSlat0[iSlat][1],iSlatToPos[iSlat]+1);
    gDeltaDiffPhiSlat0->SetPoint(iSlat,1e3*lDeltaDiffRotSlat0[iSlat][2],iSlatToPos[iSlat]+1);
  }

  // Import TGeo geometry 
  char* geoFilename = "geometry.root";
  cout << "geometry imported" << endl;
  if ( ! AliGeomManager::GetGeometry() ) {
    AliGeomManager::LoadGeometry(geoFilename);
    if (! AliGeomManager::GetGeometry() ) {
      printf("MUONSurveyCh8L: getting geometry from file %s failed\n", geoFilename);
      return;
    }
  }

  AliMUONGeometryTransformer *transform = new AliMUONGeometryTransformer();
//   transform->ReadGeometryData("volpath.dat", gGeoManager);
  transform->LoadGeometryData();
  cout << "geometry data read" << endl;
  AliMUONGeometryTransformer *newTransform = ReAlign(transform,11,dtrfSlat,true); 
  newTransform->WriteTransformations("transform2ReAlign.dat");
  cout << "newtransform read" << endl;
  // Generate realigned data in local cdb
  const TClonesArray* array = newTransform->GetMisAlignmentData();
   
  // CDB manager
  AliCDBManager* cdbManager = AliCDBManager::Instance();
  cdbManager->SetDefaultStorage("local://ReAlignCDB");
  
  AliCDBMetaData* cdbData = new AliCDBMetaData();
  cdbData->SetResponsible("Dimuon Offline project");
  cdbData->SetComment("MUON alignment objects with residual misalignment");
  AliCDBId id("MUON/Align/Data", 0, 0); 
  cdbManager->Put(const_cast<TClonesArray*>(array), id, cdbData);

  for(Int_t iSlat=0; iSlat<nSlats; iSlat++){
    cout << lDeltaDiffCenSlat0[iSlat][0] << " " << lDiffCenSlat0[iSlat][0] << " " << lDiffThCenSlat0[iSlat][0] << endl;
  }
  cout << endl;
  for(Int_t iSlat=0; iSlat<nSlats; iSlat++){
    //    lDiffCenSlat0[iSlat][1] = lCenSlat[iSlat][1]-lCenSlat[6][1];
    //    lDeltaDiffCenSlat0[iSlat][1] = lDiffCenSlat0[iSlat][1]-lDiffThCenSlat0[iSlat][1];
    cout << lDeltaDiffCenSlat0[iSlat][1] << " " << lDiffCenSlat0[iSlat][1] << " " << lDiffThCenSlat0[iSlat][1] << endl;
  }
  cout << endl;
  for(Int_t iSlat=0; iSlat<nSlats; iSlat++){
    cout << lDeltaDiffCenSlat0[iSlat][2] << " " << lDiffCenSlat0[iSlat][2] << " " << lDiffThCenSlat0[iSlat][2] << endl;
  }
  cout << endl;
  cout << endl;
  for(Int_t iSlat=0; iSlat<nSlats; iSlat++){
    cout << lDeltaDiffRotSlat0[iSlat][0] << " " << lDiffRotSlat0[iSlat][0] << " " << lDiffThRotSlat0[iSlat][0] << endl;
  }
  cout << endl;
  for(Int_t iSlat=0; iSlat<nSlats; iSlat++){
    cout << lDeltaDiffRotSlat0[iSlat][1] << " " << lDiffRotSlat0[iSlat][1] << " " << lDiffThRotSlat0[iSlat][1] << endl;
  }
  cout << endl;
  for(Int_t iSlat=0; iSlat<nSlats; iSlat++){
    cout << lDeltaDiffRotSlat0[iSlat][2] << " " << lDiffRotSlat0[iSlat][2] << " " << lDiffThRotSlat0[iSlat][2] << endl;
  }

  TH1F *mySlatDeltaDiffCenX = new TH1F("mySlatDeltaDiffCenX","mySlatDeltaDiffCenX",100,-10,10);
  mySlatDeltaDiffCenX->SetMaximum(15);
  mySlatDeltaDiffCenX->SetMinimum(0);
  TH1F *mySlatDeltaDiffCenY = new TH1F("mySlatDeltaDiffCenY","mySlatDeltaDiffCenY",100,-10,10);
  mySlatDeltaDiffCenY->SetMaximum(15);
  mySlatDeltaDiffCenY->SetMinimum(0);
  TH1F *mySlatDeltaDiffCenZ = new TH1F("mySlatDeltaDiffCenZ","mySlatDeltaDiffCenZ",100,-20,20);
  mySlatDeltaDiffCenZ->SetMaximum(15);
  mySlatDeltaDiffCenZ->SetMinimum(0);

  TH1F *mySlatDeltaDiffRotX = new TH1F("mySlatDeltaDiffRotX","mySlatDeltaDiffRotX",100,-10,10);
  mySlatDeltaDiffRotX->SetMaximum(15);
  mySlatDeltaDiffRotX->SetMinimum(0);
  TH1F *mySlatDeltaDiffRotY = new TH1F("mySlatDeltaDiffRotY","mySlatDeltaDiffRotY",100,-10,10);
  mySlatDeltaDiffRotY->SetMaximum(15);
  mySlatDeltaDiffRotY->SetMinimum(0);
  TH1F *mySlatDeltaDiffRotZ = new TH1F("mySlatDeltaDiffRotZ","mySlatDeltaDiffRotZ",100,-5,5);
  mySlatDeltaDiffRotZ->SetMaximum(15);
  mySlatDeltaDiffRotZ->SetMinimum(0);
  //
  // ******** Starting plots 
  //
  TCanvas *canvas;
  TPad *pad;
  TPaveLabel *theTitle;

  TPostScript *ps = 0;

  if( saveps ){
    ps = new TPostScript(filename,filetype); 
    ps->NewPage();
  }
 
  // Inv Mass, Multiplicity
  sprintf(str,"Chamber 8L");
  TCanvas *cvn0 = new TCanvas("cvn0",str,cWidth,cHeight);
  canvas = cvn0;
  canvas->Range(0,0,21,29);
 
  TPaveLabel *theTitle0 = new TPaveLabel(3,27.0,18,28.5," Deformations of chamber 8L ","br");
  theTitle = theTitle0;
  theTitle->SetFillColor(18);
  theTitle->SetTextFont(32);
  theTitle->SetTextSize(0.4);
  theTitle->SetTextColor(1);
  theTitle->Draw();
 
  TPad *pad0 = new TPad("pad0","pad0",0.01,0.01,0.98,0.91,0);
  pad = pad0;
  pad->Draw();
  pad->Divide(2,2);

  pad->cd(1);
  gStyle->SetPalette(1);
  hCPSTry->SetMinimum(100);
  hCPSTry->SetMaximum(120);
  hCPSTry->Draw("lego2z");

  pad->cd(2);
  gStyle->SetPalette(1);
  hSSTry->SetMinimum(60);
  hSSTry->SetMaximum(80);
  hSSTry->Draw("lego2z");

  pad->cd(3);
  gStyle->SetPalette(1);
  hCSTy->SetMinimum(110);
  hCSTy->SetMaximum(130);
  hCSTy->Draw("lego2z");

  pad->cd(4);
  gStyle->SetPalette(1);
  hSSTly->SetMinimum(165);
  hSSTly->SetMaximum(185);
  hSSTly->Draw("lego2z");

  if(saveps){
    ps->NewPage();
  }

  // Inv Mass, Multiplicity
  sprintf(str,"Chamber 8L");
  TCanvas *cvn1 = new TCanvas("cvn1",str,cWidth,cHeight);
  canvas = cvn1;
  canvas->Range(0,0,21,29);
  
  TPaveLabel *theTitle1 = new TPaveLabel(3,27.0,18,28.5," Deformations of chamber 8L ","br");
  theTitle = theTitle1;
  theTitle->SetFillColor(18);
  theTitle->SetTextFont(32);
  theTitle->SetTextSize(0.4);
  theTitle->SetTextColor(1);
  theTitle->Draw();
 
  TPad *pad1 = new TPad("pad1","pad1",0.01,0.01,0.98,0.91,0);
  pad = pad1;
  pad->Draw();
  pad->Divide(2,2);

  pad->cd(1);
  gStyle->SetPalette(1);
  hCPSTly->SetMinimum(120);
  hCPSTly->SetMaximum(140);
  hCPSTly->Draw("lego2z");

  pad->cd(2);
  gStyle->SetPalette(1);
  hSSTrpy->SetMinimum(60);
  hSSTrpy->SetMaximum(80);
  hSSTrpy->Draw("surf2z");

  pad->cd(3);
  gStyle->SetPalette(1);
  hCSTy->SetMinimum(110);
  hCSTy->SetMaximum(130);
  hCSTy->Draw("lego2z");

  pad->cd(4);
  gStyle->SetPalette(1);
  hSSTlpy->SetMinimum(165);
  hSSTlpy->SetMaximum(185);
  hSSTlpy->Draw("surf2z");

  // Inv Mass, Multiplicity
  sprintf(str,"Chamber 8L");
  TCanvas *cvn2 = new TCanvas("cvn2",str,cWidth,cHeight);
  canvas = cvn2;
  canvas->Range(0,0,21,29);
  
  TPaveLabel *theTitle2 = new TPaveLabel(3,27.0,18,28.5," Deformations of chamber 8L ","br");
  theTitle = theTitle2;
  theTitle->SetFillColor(18);
  theTitle->SetTextFont(32);
  theTitle->SetTextSize(0.4);
  theTitle->SetTextColor(1);
  theTitle->Draw();
 
  TPad *pad2 = new TPad("pad2","pad2",0.01,0.01,0.98,0.91,0);
  pad = pad2;
  pad->Draw();
  pad->Divide(3,2);

  pad->cd(1);
  mySlatDeltaDiffCenX->Draw();
  mySlatDeltaDiffCenX->SetXTitle("#Delta[(xc_{i}^{m}-xc_{0}^{m})-(xc_{i}^{th}-xc_{0}^{th})] (mm)");
  mySlatDeltaDiffCenX->SetYTitle("Slat ascending vertical ordering");
  gDeltaDiffCenXSlat0->SetMarkerStyle(20);
  gDeltaDiffCenXSlat0->Draw("P");

  pad->cd(2);
  mySlatDeltaDiffCenY->Draw();
  mySlatDeltaDiffCenY->SetXTitle("#Delta[(yc_{i}^{m}-yc_{0}^{m})-(yc_{i}^{th}-yc_{0}^{th})] (mm)");
  mySlatDeltaDiffCenY->SetYTitle("Slat ascending vertical ordering");
  gDeltaDiffCenYSlat0->SetMarkerStyle(20);
  gDeltaDiffCenYSlat0->Draw("P");

  pad->cd(3);
  mySlatDeltaDiffCenZ->Draw();
  mySlatDeltaDiffCenZ->SetXTitle("#Delta[(zc_{i}^{m}-zc_{0}^{m})-(zc_{i}^{th}-zc_{0}^{th})] (mm)");
  mySlatDeltaDiffCenZ->SetYTitle("Slat ascending vertical ordering");
  gDeltaDiffCenZSlat0->SetMarkerStyle(20);
  gDeltaDiffCenZSlat0->Draw("P");

  pad->cd(4);
  mySlatDeltaDiffRotX->Draw();
  mySlatDeltaDiffRotX->SetXTitle("#Delta[(#psi_{i}^{m}-#psi_{0}^{m})-(#psi_{i}^{th}-#psi_{0}^{th})] (mrad)");
  mySlatDeltaDiffRotX->SetYTitle("Slat ascending vertical ordering");
  gDeltaDiffPsiSlat0->SetMarkerStyle(20);
  gDeltaDiffPsiSlat0->Draw("P");

  pad->cd(5);
  mySlatDeltaDiffRotY->Draw();
  mySlatDeltaDiffRotY->SetXTitle("#Delta[(#theta_{i}^{m}-#theta_{0}^{m})-(#theta_{i}^{th}-#theta_{0}^{th})] (mrad)");
  mySlatDeltaDiffRotY->SetYTitle("Slat ascending vertical ordering");
  gDeltaDiffThtSlat0->SetMarkerStyle(20);
  gDeltaDiffThtSlat0->Draw("P");

  pad->cd(6);
  mySlatDeltaDiffRotZ->Draw();
  mySlatDeltaDiffRotZ->SetXTitle("#Delta[(#phi_{i}^{m}-#phi_{0}^{m})-(#phi_{i}^{th}-#phi_{0}^{th})] (mrad)");
  mySlatDeltaDiffRotZ->SetYTitle("Slat ascending vertical ordering");
  gDeltaDiffPhiSlat0->SetMarkerStyle(20);
  gDeltaDiffPhiSlat0->Draw("P");

  if( saveps ){
    ps->Close();
  }
}
 MUONSurveyCh8L.C:1
 MUONSurveyCh8L.C:2
 MUONSurveyCh8L.C:3
 MUONSurveyCh8L.C:4
 MUONSurveyCh8L.C:5
 MUONSurveyCh8L.C:6
 MUONSurveyCh8L.C:7
 MUONSurveyCh8L.C:8
 MUONSurveyCh8L.C:9
 MUONSurveyCh8L.C:10
 MUONSurveyCh8L.C:11
 MUONSurveyCh8L.C:12
 MUONSurveyCh8L.C:13
 MUONSurveyCh8L.C:14
 MUONSurveyCh8L.C:15
 MUONSurveyCh8L.C:16
 MUONSurveyCh8L.C:17
 MUONSurveyCh8L.C:18
 MUONSurveyCh8L.C:19
 MUONSurveyCh8L.C:20
 MUONSurveyCh8L.C:21
 MUONSurveyCh8L.C:22
 MUONSurveyCh8L.C:23
 MUONSurveyCh8L.C:24
 MUONSurveyCh8L.C:25
 MUONSurveyCh8L.C:26
 MUONSurveyCh8L.C:27
 MUONSurveyCh8L.C:28
 MUONSurveyCh8L.C:29
 MUONSurveyCh8L.C:30
 MUONSurveyCh8L.C:31
 MUONSurveyCh8L.C:32
 MUONSurveyCh8L.C:33
 MUONSurveyCh8L.C:34
 MUONSurveyCh8L.C:35
 MUONSurveyCh8L.C:36
 MUONSurveyCh8L.C:37
 MUONSurveyCh8L.C:38
 MUONSurveyCh8L.C:39
 MUONSurveyCh8L.C:40
 MUONSurveyCh8L.C:41
 MUONSurveyCh8L.C:42
 MUONSurveyCh8L.C:43
 MUONSurveyCh8L.C:44
 MUONSurveyCh8L.C:45
 MUONSurveyCh8L.C:46
 MUONSurveyCh8L.C:47
 MUONSurveyCh8L.C:48
 MUONSurveyCh8L.C:49
 MUONSurveyCh8L.C:50
 MUONSurveyCh8L.C:51
 MUONSurveyCh8L.C:52
 MUONSurveyCh8L.C:53
 MUONSurveyCh8L.C:54
 MUONSurveyCh8L.C:55
 MUONSurveyCh8L.C:56
 MUONSurveyCh8L.C:57
 MUONSurveyCh8L.C:58
 MUONSurveyCh8L.C:59
 MUONSurveyCh8L.C:60
 MUONSurveyCh8L.C:61
 MUONSurveyCh8L.C:62
 MUONSurveyCh8L.C:63
 MUONSurveyCh8L.C:64
 MUONSurveyCh8L.C:65
 MUONSurveyCh8L.C:66
 MUONSurveyCh8L.C:67
 MUONSurveyCh8L.C:68
 MUONSurveyCh8L.C:69
 MUONSurveyCh8L.C:70
 MUONSurveyCh8L.C:71
 MUONSurveyCh8L.C:72
 MUONSurveyCh8L.C:73
 MUONSurveyCh8L.C:74
 MUONSurveyCh8L.C:75
 MUONSurveyCh8L.C:76
 MUONSurveyCh8L.C:77
 MUONSurveyCh8L.C:78
 MUONSurveyCh8L.C:79
 MUONSurveyCh8L.C:80
 MUONSurveyCh8L.C:81
 MUONSurveyCh8L.C:82
 MUONSurveyCh8L.C:83
 MUONSurveyCh8L.C:84
 MUONSurveyCh8L.C:85
 MUONSurveyCh8L.C:86
 MUONSurveyCh8L.C:87
 MUONSurveyCh8L.C:88
 MUONSurveyCh8L.C:89
 MUONSurveyCh8L.C:90
 MUONSurveyCh8L.C:91
 MUONSurveyCh8L.C:92
 MUONSurveyCh8L.C:93
 MUONSurveyCh8L.C:94
 MUONSurveyCh8L.C:95
 MUONSurveyCh8L.C:96
 MUONSurveyCh8L.C:97
 MUONSurveyCh8L.C:98
 MUONSurveyCh8L.C:99
 MUONSurveyCh8L.C:100
 MUONSurveyCh8L.C:101
 MUONSurveyCh8L.C:102
 MUONSurveyCh8L.C:103
 MUONSurveyCh8L.C:104
 MUONSurveyCh8L.C:105
 MUONSurveyCh8L.C:106
 MUONSurveyCh8L.C:107
 MUONSurveyCh8L.C:108
 MUONSurveyCh8L.C:109
 MUONSurveyCh8L.C:110
 MUONSurveyCh8L.C:111
 MUONSurveyCh8L.C:112
 MUONSurveyCh8L.C:113
 MUONSurveyCh8L.C:114
 MUONSurveyCh8L.C:115
 MUONSurveyCh8L.C:116
 MUONSurveyCh8L.C:117
 MUONSurveyCh8L.C:118
 MUONSurveyCh8L.C:119
 MUONSurveyCh8L.C:120
 MUONSurveyCh8L.C:121
 MUONSurveyCh8L.C:122
 MUONSurveyCh8L.C:123
 MUONSurveyCh8L.C:124
 MUONSurveyCh8L.C:125
 MUONSurveyCh8L.C:126
 MUONSurveyCh8L.C:127
 MUONSurveyCh8L.C:128
 MUONSurveyCh8L.C:129
 MUONSurveyCh8L.C:130
 MUONSurveyCh8L.C:131
 MUONSurveyCh8L.C:132
 MUONSurveyCh8L.C:133
 MUONSurveyCh8L.C:134
 MUONSurveyCh8L.C:135
 MUONSurveyCh8L.C:136
 MUONSurveyCh8L.C:137
 MUONSurveyCh8L.C:138
 MUONSurveyCh8L.C:139
 MUONSurveyCh8L.C:140
 MUONSurveyCh8L.C:141
 MUONSurveyCh8L.C:142
 MUONSurveyCh8L.C:143
 MUONSurveyCh8L.C:144
 MUONSurveyCh8L.C:145
 MUONSurveyCh8L.C:146
 MUONSurveyCh8L.C:147
 MUONSurveyCh8L.C:148
 MUONSurveyCh8L.C:149
 MUONSurveyCh8L.C:150
 MUONSurveyCh8L.C:151
 MUONSurveyCh8L.C:152
 MUONSurveyCh8L.C:153
 MUONSurveyCh8L.C:154
 MUONSurveyCh8L.C:155
 MUONSurveyCh8L.C:156
 MUONSurveyCh8L.C:157
 MUONSurveyCh8L.C:158
 MUONSurveyCh8L.C:159
 MUONSurveyCh8L.C:160
 MUONSurveyCh8L.C:161
 MUONSurveyCh8L.C:162
 MUONSurveyCh8L.C:163
 MUONSurveyCh8L.C:164
 MUONSurveyCh8L.C:165
 MUONSurveyCh8L.C:166
 MUONSurveyCh8L.C:167
 MUONSurveyCh8L.C:168
 MUONSurveyCh8L.C:169
 MUONSurveyCh8L.C:170
 MUONSurveyCh8L.C:171
 MUONSurveyCh8L.C:172
 MUONSurveyCh8L.C:173
 MUONSurveyCh8L.C:174
 MUONSurveyCh8L.C:175
 MUONSurveyCh8L.C:176
 MUONSurveyCh8L.C:177
 MUONSurveyCh8L.C:178
 MUONSurveyCh8L.C:179
 MUONSurveyCh8L.C:180
 MUONSurveyCh8L.C:181
 MUONSurveyCh8L.C:182
 MUONSurveyCh8L.C:183
 MUONSurveyCh8L.C:184
 MUONSurveyCh8L.C:185
 MUONSurveyCh8L.C:186
 MUONSurveyCh8L.C:187
 MUONSurveyCh8L.C:188
 MUONSurveyCh8L.C:189
 MUONSurveyCh8L.C:190
 MUONSurveyCh8L.C:191
 MUONSurveyCh8L.C:192
 MUONSurveyCh8L.C:193
 MUONSurveyCh8L.C:194
 MUONSurveyCh8L.C:195
 MUONSurveyCh8L.C:196
 MUONSurveyCh8L.C:197
 MUONSurveyCh8L.C:198
 MUONSurveyCh8L.C:199
 MUONSurveyCh8L.C:200
 MUONSurveyCh8L.C:201
 MUONSurveyCh8L.C:202
 MUONSurveyCh8L.C:203
 MUONSurveyCh8L.C:204
 MUONSurveyCh8L.C:205
 MUONSurveyCh8L.C:206
 MUONSurveyCh8L.C:207
 MUONSurveyCh8L.C:208
 MUONSurveyCh8L.C:209
 MUONSurveyCh8L.C:210
 MUONSurveyCh8L.C:211
 MUONSurveyCh8L.C:212
 MUONSurveyCh8L.C:213
 MUONSurveyCh8L.C:214
 MUONSurveyCh8L.C:215
 MUONSurveyCh8L.C:216
 MUONSurveyCh8L.C:217
 MUONSurveyCh8L.C:218
 MUONSurveyCh8L.C:219
 MUONSurveyCh8L.C:220
 MUONSurveyCh8L.C:221
 MUONSurveyCh8L.C:222
 MUONSurveyCh8L.C:223
 MUONSurveyCh8L.C:224
 MUONSurveyCh8L.C:225
 MUONSurveyCh8L.C:226
 MUONSurveyCh8L.C:227
 MUONSurveyCh8L.C:228
 MUONSurveyCh8L.C:229
 MUONSurveyCh8L.C:230
 MUONSurveyCh8L.C:231
 MUONSurveyCh8L.C:232
 MUONSurveyCh8L.C:233
 MUONSurveyCh8L.C:234
 MUONSurveyCh8L.C:235
 MUONSurveyCh8L.C:236
 MUONSurveyCh8L.C:237
 MUONSurveyCh8L.C:238
 MUONSurveyCh8L.C:239
 MUONSurveyCh8L.C:240
 MUONSurveyCh8L.C:241
 MUONSurveyCh8L.C:242
 MUONSurveyCh8L.C:243
 MUONSurveyCh8L.C:244
 MUONSurveyCh8L.C:245
 MUONSurveyCh8L.C:246
 MUONSurveyCh8L.C:247
 MUONSurveyCh8L.C:248
 MUONSurveyCh8L.C:249
 MUONSurveyCh8L.C:250
 MUONSurveyCh8L.C:251
 MUONSurveyCh8L.C:252
 MUONSurveyCh8L.C:253
 MUONSurveyCh8L.C:254
 MUONSurveyCh8L.C:255
 MUONSurveyCh8L.C:256
 MUONSurveyCh8L.C:257
 MUONSurveyCh8L.C:258
 MUONSurveyCh8L.C:259
 MUONSurveyCh8L.C:260
 MUONSurveyCh8L.C:261
 MUONSurveyCh8L.C:262
 MUONSurveyCh8L.C:263
 MUONSurveyCh8L.C:264
 MUONSurveyCh8L.C:265
 MUONSurveyCh8L.C:266
 MUONSurveyCh8L.C:267
 MUONSurveyCh8L.C:268
 MUONSurveyCh8L.C:269
 MUONSurveyCh8L.C:270
 MUONSurveyCh8L.C:271
 MUONSurveyCh8L.C:272
 MUONSurveyCh8L.C:273
 MUONSurveyCh8L.C:274
 MUONSurveyCh8L.C:275
 MUONSurveyCh8L.C:276
 MUONSurveyCh8L.C:277
 MUONSurveyCh8L.C:278
 MUONSurveyCh8L.C:279
 MUONSurveyCh8L.C:280
 MUONSurveyCh8L.C:281
 MUONSurveyCh8L.C:282
 MUONSurveyCh8L.C:283
 MUONSurveyCh8L.C:284
 MUONSurveyCh8L.C:285
 MUONSurveyCh8L.C:286
 MUONSurveyCh8L.C:287
 MUONSurveyCh8L.C:288
 MUONSurveyCh8L.C:289
 MUONSurveyCh8L.C:290
 MUONSurveyCh8L.C:291
 MUONSurveyCh8L.C:292
 MUONSurveyCh8L.C:293
 MUONSurveyCh8L.C:294
 MUONSurveyCh8L.C:295
 MUONSurveyCh8L.C:296
 MUONSurveyCh8L.C:297
 MUONSurveyCh8L.C:298
 MUONSurveyCh8L.C:299
 MUONSurveyCh8L.C:300
 MUONSurveyCh8L.C:301
 MUONSurveyCh8L.C:302
 MUONSurveyCh8L.C:303
 MUONSurveyCh8L.C:304
 MUONSurveyCh8L.C:305
 MUONSurveyCh8L.C:306
 MUONSurveyCh8L.C:307
 MUONSurveyCh8L.C:308
 MUONSurveyCh8L.C:309
 MUONSurveyCh8L.C:310
 MUONSurveyCh8L.C:311
 MUONSurveyCh8L.C:312
 MUONSurveyCh8L.C:313
 MUONSurveyCh8L.C:314
 MUONSurveyCh8L.C:315
 MUONSurveyCh8L.C:316
 MUONSurveyCh8L.C:317
 MUONSurveyCh8L.C:318
 MUONSurveyCh8L.C:319
 MUONSurveyCh8L.C:320
 MUONSurveyCh8L.C:321
 MUONSurveyCh8L.C:322
 MUONSurveyCh8L.C:323
 MUONSurveyCh8L.C:324
 MUONSurveyCh8L.C:325
 MUONSurveyCh8L.C:326
 MUONSurveyCh8L.C:327
 MUONSurveyCh8L.C:328
 MUONSurveyCh8L.C:329
 MUONSurveyCh8L.C:330
 MUONSurveyCh8L.C:331
 MUONSurveyCh8L.C:332
 MUONSurveyCh8L.C:333
 MUONSurveyCh8L.C:334
 MUONSurveyCh8L.C:335
 MUONSurveyCh8L.C:336
 MUONSurveyCh8L.C:337
 MUONSurveyCh8L.C:338
 MUONSurveyCh8L.C:339
 MUONSurveyCh8L.C:340
 MUONSurveyCh8L.C:341
 MUONSurveyCh8L.C:342
 MUONSurveyCh8L.C:343
 MUONSurveyCh8L.C:344
 MUONSurveyCh8L.C:345
 MUONSurveyCh8L.C:346
 MUONSurveyCh8L.C:347
 MUONSurveyCh8L.C:348
 MUONSurveyCh8L.C:349
 MUONSurveyCh8L.C:350
 MUONSurveyCh8L.C:351
 MUONSurveyCh8L.C:352
 MUONSurveyCh8L.C:353
 MUONSurveyCh8L.C:354
 MUONSurveyCh8L.C:355
 MUONSurveyCh8L.C:356
 MUONSurveyCh8L.C:357
 MUONSurveyCh8L.C:358
 MUONSurveyCh8L.C:359
 MUONSurveyCh8L.C:360
 MUONSurveyCh8L.C:361
 MUONSurveyCh8L.C:362
 MUONSurveyCh8L.C:363
 MUONSurveyCh8L.C:364
 MUONSurveyCh8L.C:365
 MUONSurveyCh8L.C:366
 MUONSurveyCh8L.C:367
 MUONSurveyCh8L.C:368
 MUONSurveyCh8L.C:369
 MUONSurveyCh8L.C:370
 MUONSurveyCh8L.C:371
 MUONSurveyCh8L.C:372
 MUONSurveyCh8L.C:373
 MUONSurveyCh8L.C:374
 MUONSurveyCh8L.C:375
 MUONSurveyCh8L.C:376
 MUONSurveyCh8L.C:377
 MUONSurveyCh8L.C:378
 MUONSurveyCh8L.C:379
 MUONSurveyCh8L.C:380
 MUONSurveyCh8L.C:381
 MUONSurveyCh8L.C:382
 MUONSurveyCh8L.C:383
 MUONSurveyCh8L.C:384
 MUONSurveyCh8L.C:385
 MUONSurveyCh8L.C:386
 MUONSurveyCh8L.C:387
 MUONSurveyCh8L.C:388
 MUONSurveyCh8L.C:389
 MUONSurveyCh8L.C:390
 MUONSurveyCh8L.C:391
 MUONSurveyCh8L.C:392
 MUONSurveyCh8L.C:393
 MUONSurveyCh8L.C:394
 MUONSurveyCh8L.C:395
 MUONSurveyCh8L.C:396
 MUONSurveyCh8L.C:397
 MUONSurveyCh8L.C:398
 MUONSurveyCh8L.C:399
 MUONSurveyCh8L.C:400
 MUONSurveyCh8L.C:401
 MUONSurveyCh8L.C:402
 MUONSurveyCh8L.C:403
 MUONSurveyCh8L.C:404
 MUONSurveyCh8L.C:405
 MUONSurveyCh8L.C:406
 MUONSurveyCh8L.C:407
 MUONSurveyCh8L.C:408
 MUONSurveyCh8L.C:409
 MUONSurveyCh8L.C:410
 MUONSurveyCh8L.C:411
 MUONSurveyCh8L.C:412
 MUONSurveyCh8L.C:413
 MUONSurveyCh8L.C:414
 MUONSurveyCh8L.C:415
 MUONSurveyCh8L.C:416
 MUONSurveyCh8L.C:417
 MUONSurveyCh8L.C:418
 MUONSurveyCh8L.C:419
 MUONSurveyCh8L.C:420
 MUONSurveyCh8L.C:421
 MUONSurveyCh8L.C:422
 MUONSurveyCh8L.C:423
 MUONSurveyCh8L.C:424
 MUONSurveyCh8L.C:425
 MUONSurveyCh8L.C:426
 MUONSurveyCh8L.C:427
 MUONSurveyCh8L.C:428
 MUONSurveyCh8L.C:429
 MUONSurveyCh8L.C:430
 MUONSurveyCh8L.C:431
 MUONSurveyCh8L.C:432
 MUONSurveyCh8L.C:433
 MUONSurveyCh8L.C:434
 MUONSurveyCh8L.C:435
 MUONSurveyCh8L.C:436
 MUONSurveyCh8L.C:437
 MUONSurveyCh8L.C:438
 MUONSurveyCh8L.C:439
 MUONSurveyCh8L.C:440
 MUONSurveyCh8L.C:441
 MUONSurveyCh8L.C:442
 MUONSurveyCh8L.C:443
 MUONSurveyCh8L.C:444
 MUONSurveyCh8L.C:445
 MUONSurveyCh8L.C:446
 MUONSurveyCh8L.C:447
 MUONSurveyCh8L.C:448
 MUONSurveyCh8L.C:449
 MUONSurveyCh8L.C:450
 MUONSurveyCh8L.C:451
 MUONSurveyCh8L.C:452
 MUONSurveyCh8L.C:453
 MUONSurveyCh8L.C:454
 MUONSurveyCh8L.C:455
 MUONSurveyCh8L.C:456
 MUONSurveyCh8L.C:457
 MUONSurveyCh8L.C:458
 MUONSurveyCh8L.C:459
 MUONSurveyCh8L.C:460
 MUONSurveyCh8L.C:461
 MUONSurveyCh8L.C:462
 MUONSurveyCh8L.C:463
 MUONSurveyCh8L.C:464
 MUONSurveyCh8L.C:465
 MUONSurveyCh8L.C:466
 MUONSurveyCh8L.C:467
 MUONSurveyCh8L.C:468
 MUONSurveyCh8L.C:469
 MUONSurveyCh8L.C:470
 MUONSurveyCh8L.C:471
 MUONSurveyCh8L.C:472
 MUONSurveyCh8L.C:473
 MUONSurveyCh8L.C:474
 MUONSurveyCh8L.C:475
 MUONSurveyCh8L.C:476
 MUONSurveyCh8L.C:477
 MUONSurveyCh8L.C:478
 MUONSurveyCh8L.C:479
 MUONSurveyCh8L.C:480
 MUONSurveyCh8L.C:481
 MUONSurveyCh8L.C:482
 MUONSurveyCh8L.C:483
 MUONSurveyCh8L.C:484
 MUONSurveyCh8L.C:485
 MUONSurveyCh8L.C:486
 MUONSurveyCh8L.C:487
 MUONSurveyCh8L.C:488
 MUONSurveyCh8L.C:489
 MUONSurveyCh8L.C:490
 MUONSurveyCh8L.C:491
 MUONSurveyCh8L.C:492
 MUONSurveyCh8L.C:493
 MUONSurveyCh8L.C:494
 MUONSurveyCh8L.C:495
 MUONSurveyCh8L.C:496
 MUONSurveyCh8L.C:497
 MUONSurveyCh8L.C:498
 MUONSurveyCh8L.C:499
 MUONSurveyCh8L.C:500
 MUONSurveyCh8L.C:501
 MUONSurveyCh8L.C:502
 MUONSurveyCh8L.C:503
 MUONSurveyCh8L.C:504
 MUONSurveyCh8L.C:505
 MUONSurveyCh8L.C:506
 MUONSurveyCh8L.C:507
 MUONSurveyCh8L.C:508
 MUONSurveyCh8L.C:509
 MUONSurveyCh8L.C:510
 MUONSurveyCh8L.C:511
 MUONSurveyCh8L.C:512
 MUONSurveyCh8L.C:513
 MUONSurveyCh8L.C:514
 MUONSurveyCh8L.C:515
 MUONSurveyCh8L.C:516
 MUONSurveyCh8L.C:517
 MUONSurveyCh8L.C:518
 MUONSurveyCh8L.C:519
 MUONSurveyCh8L.C:520
 MUONSurveyCh8L.C:521
 MUONSurveyCh8L.C:522
 MUONSurveyCh8L.C:523
 MUONSurveyCh8L.C:524
 MUONSurveyCh8L.C:525
 MUONSurveyCh8L.C:526
 MUONSurveyCh8L.C:527
 MUONSurveyCh8L.C:528
 MUONSurveyCh8L.C:529
 MUONSurveyCh8L.C:530
 MUONSurveyCh8L.C:531
 MUONSurveyCh8L.C:532
 MUONSurveyCh8L.C:533
 MUONSurveyCh8L.C:534
 MUONSurveyCh8L.C:535
 MUONSurveyCh8L.C:536
 MUONSurveyCh8L.C:537
 MUONSurveyCh8L.C:538
 MUONSurveyCh8L.C:539
 MUONSurveyCh8L.C:540
 MUONSurveyCh8L.C:541
 MUONSurveyCh8L.C:542
 MUONSurveyCh8L.C:543
 MUONSurveyCh8L.C:544
 MUONSurveyCh8L.C:545
 MUONSurveyCh8L.C:546
 MUONSurveyCh8L.C:547
 MUONSurveyCh8L.C:548
 MUONSurveyCh8L.C:549
 MUONSurveyCh8L.C:550
 MUONSurveyCh8L.C:551
 MUONSurveyCh8L.C:552
 MUONSurveyCh8L.C:553
 MUONSurveyCh8L.C:554
 MUONSurveyCh8L.C:555
 MUONSurveyCh8L.C:556
 MUONSurveyCh8L.C:557
 MUONSurveyCh8L.C:558
 MUONSurveyCh8L.C:559
 MUONSurveyCh8L.C:560
 MUONSurveyCh8L.C:561
 MUONSurveyCh8L.C:562
 MUONSurveyCh8L.C:563
 MUONSurveyCh8L.C:564
 MUONSurveyCh8L.C:565
 MUONSurveyCh8L.C:566
 MUONSurveyCh8L.C:567
 MUONSurveyCh8L.C:568
 MUONSurveyCh8L.C:569
 MUONSurveyCh8L.C:570
 MUONSurveyCh8L.C:571
 MUONSurveyCh8L.C:572
 MUONSurveyCh8L.C:573
 MUONSurveyCh8L.C:574
 MUONSurveyCh8L.C:575
 MUONSurveyCh8L.C:576
 MUONSurveyCh8L.C:577
 MUONSurveyCh8L.C:578
 MUONSurveyCh8L.C:579
 MUONSurveyCh8L.C:580
 MUONSurveyCh8L.C:581
 MUONSurveyCh8L.C:582
 MUONSurveyCh8L.C:583
 MUONSurveyCh8L.C:584
 MUONSurveyCh8L.C:585
 MUONSurveyCh8L.C:586
 MUONSurveyCh8L.C:587
 MUONSurveyCh8L.C:588
 MUONSurveyCh8L.C:589
 MUONSurveyCh8L.C:590
 MUONSurveyCh8L.C:591
 MUONSurveyCh8L.C:592
 MUONSurveyCh8L.C:593
 MUONSurveyCh8L.C:594
 MUONSurveyCh8L.C:595
 MUONSurveyCh8L.C:596
 MUONSurveyCh8L.C:597
 MUONSurveyCh8L.C:598
 MUONSurveyCh8L.C:599
 MUONSurveyCh8L.C:600
 MUONSurveyCh8L.C:601
 MUONSurveyCh8L.C:602
 MUONSurveyCh8L.C:603
 MUONSurveyCh8L.C:604
 MUONSurveyCh8L.C:605
 MUONSurveyCh8L.C:606
 MUONSurveyCh8L.C:607
 MUONSurveyCh8L.C:608
 MUONSurveyCh8L.C:609
 MUONSurveyCh8L.C:610
 MUONSurveyCh8L.C:611
 MUONSurveyCh8L.C:612
 MUONSurveyCh8L.C:613
 MUONSurveyCh8L.C:614
 MUONSurveyCh8L.C:615
 MUONSurveyCh8L.C:616
 MUONSurveyCh8L.C:617
 MUONSurveyCh8L.C:618
 MUONSurveyCh8L.C:619
 MUONSurveyCh8L.C:620
 MUONSurveyCh8L.C:621
 MUONSurveyCh8L.C:622
 MUONSurveyCh8L.C:623
 MUONSurveyCh8L.C:624
 MUONSurveyCh8L.C:625
 MUONSurveyCh8L.C:626
 MUONSurveyCh8L.C:627
 MUONSurveyCh8L.C:628
 MUONSurveyCh8L.C:629
 MUONSurveyCh8L.C:630
 MUONSurveyCh8L.C:631
 MUONSurveyCh8L.C:632
 MUONSurveyCh8L.C:633
 MUONSurveyCh8L.C:634
 MUONSurveyCh8L.C:635
 MUONSurveyCh8L.C:636
 MUONSurveyCh8L.C:637
 MUONSurveyCh8L.C:638
 MUONSurveyCh8L.C:639
 MUONSurveyCh8L.C:640
 MUONSurveyCh8L.C:641
 MUONSurveyCh8L.C:642
 MUONSurveyCh8L.C:643
 MUONSurveyCh8L.C:644
 MUONSurveyCh8L.C:645
 MUONSurveyCh8L.C:646
 MUONSurveyCh8L.C:647
 MUONSurveyCh8L.C:648
 MUONSurveyCh8L.C:649
 MUONSurveyCh8L.C:650
 MUONSurveyCh8L.C:651
 MUONSurveyCh8L.C:652
 MUONSurveyCh8L.C:653
 MUONSurveyCh8L.C:654
 MUONSurveyCh8L.C:655
 MUONSurveyCh8L.C:656
 MUONSurveyCh8L.C:657
 MUONSurveyCh8L.C:658
 MUONSurveyCh8L.C:659
 MUONSurveyCh8L.C:660
 MUONSurveyCh8L.C:661
 MUONSurveyCh8L.C:662
 MUONSurveyCh8L.C:663
 MUONSurveyCh8L.C:664
 MUONSurveyCh8L.C:665
 MUONSurveyCh8L.C:666
 MUONSurveyCh8L.C:667
 MUONSurveyCh8L.C:668
 MUONSurveyCh8L.C:669
 MUONSurveyCh8L.C:670
 MUONSurveyCh8L.C:671
 MUONSurveyCh8L.C:672
 MUONSurveyCh8L.C:673
 MUONSurveyCh8L.C:674
 MUONSurveyCh8L.C:675
 MUONSurveyCh8L.C:676
 MUONSurveyCh8L.C:677
 MUONSurveyCh8L.C:678
 MUONSurveyCh8L.C:679
 MUONSurveyCh8L.C:680
 MUONSurveyCh8L.C:681
 MUONSurveyCh8L.C:682
 MUONSurveyCh8L.C:683
 MUONSurveyCh8L.C:684
 MUONSurveyCh8L.C:685
 MUONSurveyCh8L.C:686
 MUONSurveyCh8L.C:687
 MUONSurveyCh8L.C:688
 MUONSurveyCh8L.C:689
 MUONSurveyCh8L.C:690
 MUONSurveyCh8L.C:691
 MUONSurveyCh8L.C:692
 MUONSurveyCh8L.C:693
 MUONSurveyCh8L.C:694
 MUONSurveyCh8L.C:695
 MUONSurveyCh8L.C:696
 MUONSurveyCh8L.C:697
 MUONSurveyCh8L.C:698
 MUONSurveyCh8L.C:699
 MUONSurveyCh8L.C:700
 MUONSurveyCh8L.C:701
 MUONSurveyCh8L.C:702
 MUONSurveyCh8L.C:703
 MUONSurveyCh8L.C:704
 MUONSurveyCh8L.C:705
 MUONSurveyCh8L.C:706
 MUONSurveyCh8L.C:707
 MUONSurveyCh8L.C:708
 MUONSurveyCh8L.C:709
 MUONSurveyCh8L.C:710
 MUONSurveyCh8L.C:711
 MUONSurveyCh8L.C:712
 MUONSurveyCh8L.C:713
 MUONSurveyCh8L.C:714
 MUONSurveyCh8L.C:715
 MUONSurveyCh8L.C:716
 MUONSurveyCh8L.C:717
 MUONSurveyCh8L.C:718
 MUONSurveyCh8L.C:719
 MUONSurveyCh8L.C:720
 MUONSurveyCh8L.C:721
 MUONSurveyCh8L.C:722
 MUONSurveyCh8L.C:723
 MUONSurveyCh8L.C:724
 MUONSurveyCh8L.C:725
 MUONSurveyCh8L.C:726
 MUONSurveyCh8L.C:727
 MUONSurveyCh8L.C:728
 MUONSurveyCh8L.C:729
 MUONSurveyCh8L.C:730
 MUONSurveyCh8L.C:731
 MUONSurveyCh8L.C:732
 MUONSurveyCh8L.C:733
 MUONSurveyCh8L.C:734
 MUONSurveyCh8L.C:735
 MUONSurveyCh8L.C:736
 MUONSurveyCh8L.C:737
 MUONSurveyCh8L.C:738
 MUONSurveyCh8L.C:739
 MUONSurveyCh8L.C:740
 MUONSurveyCh8L.C:741
 MUONSurveyCh8L.C:742
 MUONSurveyCh8L.C:743
 MUONSurveyCh8L.C:744
 MUONSurveyCh8L.C:745
 MUONSurveyCh8L.C:746
 MUONSurveyCh8L.C:747
 MUONSurveyCh8L.C:748
 MUONSurveyCh8L.C:749
 MUONSurveyCh8L.C:750
 MUONSurveyCh8L.C:751
 MUONSurveyCh8L.C:752
 MUONSurveyCh8L.C:753
 MUONSurveyCh8L.C:754
 MUONSurveyCh8L.C:755
 MUONSurveyCh8L.C:756
 MUONSurveyCh8L.C:757
 MUONSurveyCh8L.C:758
 MUONSurveyCh8L.C:759
 MUONSurveyCh8L.C:760
 MUONSurveyCh8L.C:761
 MUONSurveyCh8L.C:762
 MUONSurveyCh8L.C:763
 MUONSurveyCh8L.C:764
 MUONSurveyCh8L.C:765
 MUONSurveyCh8L.C:766
 MUONSurveyCh8L.C:767
 MUONSurveyCh8L.C:768
 MUONSurveyCh8L.C:769
 MUONSurveyCh8L.C:770
 MUONSurveyCh8L.C:771
 MUONSurveyCh8L.C:772
 MUONSurveyCh8L.C:773
 MUONSurveyCh8L.C:774
 MUONSurveyCh8L.C:775
 MUONSurveyCh8L.C:776
 MUONSurveyCh8L.C:777
 MUONSurveyCh8L.C:778
 MUONSurveyCh8L.C:779
 MUONSurveyCh8L.C:780
 MUONSurveyCh8L.C:781
 MUONSurveyCh8L.C:782
 MUONSurveyCh8L.C:783
 MUONSurveyCh8L.C:784
 MUONSurveyCh8L.C:785
 MUONSurveyCh8L.C:786
 MUONSurveyCh8L.C:787
 MUONSurveyCh8L.C:788
 MUONSurveyCh8L.C:789
 MUONSurveyCh8L.C:790
 MUONSurveyCh8L.C:791
 MUONSurveyCh8L.C:792
 MUONSurveyCh8L.C:793
 MUONSurveyCh8L.C:794
 MUONSurveyCh8L.C:795
 MUONSurveyCh8L.C:796
 MUONSurveyCh8L.C:797
 MUONSurveyCh8L.C:798
 MUONSurveyCh8L.C:799
 MUONSurveyCh8L.C:800
 MUONSurveyCh8L.C:801
 MUONSurveyCh8L.C:802
 MUONSurveyCh8L.C:803
 MUONSurveyCh8L.C:804
 MUONSurveyCh8L.C:805
 MUONSurveyCh8L.C:806
 MUONSurveyCh8L.C:807
 MUONSurveyCh8L.C:808
 MUONSurveyCh8L.C:809
 MUONSurveyCh8L.C:810
 MUONSurveyCh8L.C:811
 MUONSurveyCh8L.C:812
 MUONSurveyCh8L.C:813
 MUONSurveyCh8L.C:814
 MUONSurveyCh8L.C:815
 MUONSurveyCh8L.C:816
 MUONSurveyCh8L.C:817
 MUONSurveyCh8L.C:818
 MUONSurveyCh8L.C:819
 MUONSurveyCh8L.C:820
 MUONSurveyCh8L.C:821
 MUONSurveyCh8L.C:822
 MUONSurveyCh8L.C:823
 MUONSurveyCh8L.C:824
 MUONSurveyCh8L.C:825
 MUONSurveyCh8L.C:826
 MUONSurveyCh8L.C:827
 MUONSurveyCh8L.C:828
 MUONSurveyCh8L.C:829
 MUONSurveyCh8L.C:830
 MUONSurveyCh8L.C:831
 MUONSurveyCh8L.C:832
 MUONSurveyCh8L.C:833
 MUONSurveyCh8L.C:834
 MUONSurveyCh8L.C:835
 MUONSurveyCh8L.C:836
 MUONSurveyCh8L.C:837
 MUONSurveyCh8L.C:838
 MUONSurveyCh8L.C:839
 MUONSurveyCh8L.C:840
 MUONSurveyCh8L.C:841
 MUONSurveyCh8L.C:842
 MUONSurveyCh8L.C:843
 MUONSurveyCh8L.C:844
 MUONSurveyCh8L.C:845
 MUONSurveyCh8L.C:846
 MUONSurveyCh8L.C:847
 MUONSurveyCh8L.C:848
 MUONSurveyCh8L.C:849
 MUONSurveyCh8L.C:850
 MUONSurveyCh8L.C:851
 MUONSurveyCh8L.C:852
 MUONSurveyCh8L.C:853
 MUONSurveyCh8L.C:854
 MUONSurveyCh8L.C:855
 MUONSurveyCh8L.C:856
 MUONSurveyCh8L.C:857
 MUONSurveyCh8L.C:858
 MUONSurveyCh8L.C:859
 MUONSurveyCh8L.C:860
 MUONSurveyCh8L.C:861
 MUONSurveyCh8L.C:862
 MUONSurveyCh8L.C:863
 MUONSurveyCh8L.C:864
 MUONSurveyCh8L.C:865
 MUONSurveyCh8L.C:866
 MUONSurveyCh8L.C:867
 MUONSurveyCh8L.C:868
 MUONSurveyCh8L.C:869
 MUONSurveyCh8L.C:870
 MUONSurveyCh8L.C:871
 MUONSurveyCh8L.C:872
 MUONSurveyCh8L.C:873
 MUONSurveyCh8L.C:874
 MUONSurveyCh8L.C:875
 MUONSurveyCh8L.C:876
 MUONSurveyCh8L.C:877
 MUONSurveyCh8L.C:878
 MUONSurveyCh8L.C:879
 MUONSurveyCh8L.C:880
 MUONSurveyCh8L.C:881
 MUONSurveyCh8L.C:882
 MUONSurveyCh8L.C:883
 MUONSurveyCh8L.C:884
 MUONSurveyCh8L.C:885
 MUONSurveyCh8L.C:886
 MUONSurveyCh8L.C:887
 MUONSurveyCh8L.C:888
 MUONSurveyCh8L.C:889
 MUONSurveyCh8L.C:890
 MUONSurveyCh8L.C:891
 MUONSurveyCh8L.C:892
 MUONSurveyCh8L.C:893
 MUONSurveyCh8L.C:894
 MUONSurveyCh8L.C:895
 MUONSurveyCh8L.C:896
 MUONSurveyCh8L.C:897
 MUONSurveyCh8L.C:898
 MUONSurveyCh8L.C:899
 MUONSurveyCh8L.C:900
 MUONSurveyCh8L.C:901
 MUONSurveyCh8L.C:902
 MUONSurveyCh8L.C:903
 MUONSurveyCh8L.C:904
 MUONSurveyCh8L.C:905
 MUONSurveyCh8L.C:906
 MUONSurveyCh8L.C:907
 MUONSurveyCh8L.C:908
 MUONSurveyCh8L.C:909
 MUONSurveyCh8L.C:910
 MUONSurveyCh8L.C:911
 MUONSurveyCh8L.C:912
 MUONSurveyCh8L.C:913
 MUONSurveyCh8L.C:914
 MUONSurveyCh8L.C:915
 MUONSurveyCh8L.C:916
 MUONSurveyCh8L.C:917
 MUONSurveyCh8L.C:918
 MUONSurveyCh8L.C:919
 MUONSurveyCh8L.C:920
 MUONSurveyCh8L.C:921
 MUONSurveyCh8L.C:922
 MUONSurveyCh8L.C:923
 MUONSurveyCh8L.C:924
 MUONSurveyCh8L.C:925
 MUONSurveyCh8L.C:926
 MUONSurveyCh8L.C:927
 MUONSurveyCh8L.C:928
 MUONSurveyCh8L.C:929
 MUONSurveyCh8L.C:930
 MUONSurveyCh8L.C:931
 MUONSurveyCh8L.C:932
 MUONSurveyCh8L.C:933
 MUONSurveyCh8L.C:934
 MUONSurveyCh8L.C:935
 MUONSurveyCh8L.C:936
 MUONSurveyCh8L.C:937
 MUONSurveyCh8L.C:938
 MUONSurveyCh8L.C:939
 MUONSurveyCh8L.C:940
 MUONSurveyCh8L.C:941
 MUONSurveyCh8L.C:942
 MUONSurveyCh8L.C:943
 MUONSurveyCh8L.C:944
 MUONSurveyCh8L.C:945
 MUONSurveyCh8L.C:946
 MUONSurveyCh8L.C:947
 MUONSurveyCh8L.C:948
 MUONSurveyCh8L.C:949
 MUONSurveyCh8L.C:950
 MUONSurveyCh8L.C:951
 MUONSurveyCh8L.C:952
 MUONSurveyCh8L.C:953
 MUONSurveyCh8L.C:954
 MUONSurveyCh8L.C:955
 MUONSurveyCh8L.C:956
 MUONSurveyCh8L.C:957
 MUONSurveyCh8L.C:958
 MUONSurveyCh8L.C:959
 MUONSurveyCh8L.C:960
 MUONSurveyCh8L.C:961
 MUONSurveyCh8L.C:962
 MUONSurveyCh8L.C:963
 MUONSurveyCh8L.C:964
 MUONSurveyCh8L.C:965
 MUONSurveyCh8L.C:966
 MUONSurveyCh8L.C:967
 MUONSurveyCh8L.C:968
 MUONSurveyCh8L.C:969
 MUONSurveyCh8L.C:970
 MUONSurveyCh8L.C:971
 MUONSurveyCh8L.C:972
 MUONSurveyCh8L.C:973
 MUONSurveyCh8L.C:974
 MUONSurveyCh8L.C:975
 MUONSurveyCh8L.C:976
 MUONSurveyCh8L.C:977
 MUONSurveyCh8L.C:978
 MUONSurveyCh8L.C:979
 MUONSurveyCh8L.C:980
 MUONSurveyCh8L.C:981
 MUONSurveyCh8L.C:982
 MUONSurveyCh8L.C:983
 MUONSurveyCh8L.C:984
 MUONSurveyCh8L.C:985
 MUONSurveyCh8L.C:986
 MUONSurveyCh8L.C:987
 MUONSurveyCh8L.C:988
 MUONSurveyCh8L.C:989
 MUONSurveyCh8L.C:990
 MUONSurveyCh8L.C:991
 MUONSurveyCh8L.C:992
 MUONSurveyCh8L.C:993
 MUONSurveyCh8L.C:994
 MUONSurveyCh8L.C:995
 MUONSurveyCh8L.C:996
 MUONSurveyCh8L.C:997
 MUONSurveyCh8L.C:998
 MUONSurveyCh8L.C:999
 MUONSurveyCh8L.C:1000
 MUONSurveyCh8L.C:1001
 MUONSurveyCh8L.C:1002
 MUONSurveyCh8L.C:1003
 MUONSurveyCh8L.C:1004
 MUONSurveyCh8L.C:1005
 MUONSurveyCh8L.C:1006
 MUONSurveyCh8L.C:1007
 MUONSurveyCh8L.C:1008
 MUONSurveyCh8L.C:1009
 MUONSurveyCh8L.C:1010
 MUONSurveyCh8L.C:1011
 MUONSurveyCh8L.C:1012
 MUONSurveyCh8L.C:1013