ROOT logo
void PMDSurveyToAlignment_v1(){

  // Macro to convert survey data into alignment data. 
  // The position of four fiducial marks, sticked on the 
  // preshower plane of PMD is converted into the 
  // global position. 
  
  if(!gGeoManager) AliGeomManager::LoadGeometry("geometry.root");
  
  TClonesArray *array = new TClonesArray("AliAlignObjMatrix",10);
  TClonesArray &mobj = *array;
  
  Double_t l_vect[3]={0.,0.,0.}; // a local vector (the origin)
  
  Double_t g_vect_1[3];    // vector corresp. to it in global RS for sector-1
  Double_t g_vect_2[3];    // vector corresp. to it in global RS for sector-2
  Double_t g_vect_3[3];    // vector corresp. to it in global RS for sector-3
  Double_t g_vect_4[3];    // vector corresp. to it in global RS for sector-4
  
  //**************** get global matrix *******************
  
  TGeoHMatrix *g3_1 = AliGeomManager::GetMatrix("PMD/Sector1");
  TGeoNode* n3_1 = gGeoManager->GetCurrentNode();
  TGeoHMatrix* l3_1 = n3_1->GetMatrix();// to get local matrix  
  g3_1->LocalToMaster(l_vect,g_vect_1); // point coordinates in the global RS
  
  cout<<endl<<"Origin of sector-1 in the global RS: "<<
    g_vect_1[0]<<" "<<g_vect_1[1]<<" "<<g_vect_1[2]<<" "<<endl;


  TGeoHMatrix *g3_2 = AliGeomManager::GetMatrix("PMD/Sector2");
  TGeoNode* n3_2 = gGeoManager->GetCurrentNode();
  TGeoHMatrix* l3_2 = n3_2->GetMatrix(); 
  g3_2->LocalToMaster(l_vect,g_vect_2);
  
  cout<<endl<<"Origin of sector-2 in the global RS: "<<
    g_vect_2[0]<<" "<<g_vect_2[1]<<" "<<g_vect_2[2]<<" "<<endl;


  TGeoHMatrix *g3_3 = AliGeomManager::GetMatrix("PMD/Sector3");
  TGeoNode* n3_3 = gGeoManager->GetCurrentNode();
  TGeoHMatrix* l3_3 = n3_3->GetMatrix(); 
  g3_3->LocalToMaster(l_vect,g_vect_3);
  
  cout<<endl<<"Origin of the sector-3 in the global RS: "<<
    g_vect_3[0]<<" "<<g_vect_3[1]<<" "<<g_vect_3[2]<<" "<<endl;
  

  TGeoHMatrix *g3_4 = AliGeomManager::GetMatrix("PMD/Sector4");
  TGeoNode* n3_4 = gGeoManager->GetCurrentNode();
  TGeoHMatrix* l3_4 = n3_4->GetMatrix();
  g3_4->LocalToMaster(l_vect,g_vect_4);
    
  cout<<endl<<"Origin of the sector-4 in the global RS: "<<
    g_vect_4[0]<<" "<<g_vect_4[1]<<" "<<g_vect_4[2]<<" "<<endl;
  
         
  // From the coordinates of fiducial marks derive back the
  // new global position of the surveyed volume.                    
  // What follows is the actual survey-to-alignment procedure which assumes,
  // 4 fiducial marks at the corners of a rectangle lying on a plane parallel
  // to a  surface of the detector at a certain offset and with x and y sides
  // parallel to the detector's x and y axes.
  // It needs as input of four points and the offset from the origin (zdepth).
  // The algorithm can be easily modified for different placement and/or
  // cardinality of the fiducial marks.
  
  // Now specify the path of the module to be misaligned
  // as followed for the PMD geometry in Geant.
  
  /*
                                Y|
                                 |
     _____________           D(3)|_____________C(2)
    |    |        |              |             |
    | 1  |   3    |              |             |
    |    |________|              |             |
    |____|___|    |              |             |
    |        | 2  |              |             |
    |   4    |    |              |_____________|_______
    |________|____|          A(0)              B(1)     X
    
    //
    // Misalignment Matrix is set  for sector-1, sector-2, sector-3 and 
    // sector-4 even though  sectors 1 and 4  and  sectors 2 and 3
    // will be mounted on the same steel plate. 
    */
  
// All the units are in milimeter in survey data file.
  
// Retrieval of real survey data from ALICE Survey Data Depot : 
  
  AliSurveyObj *so = new AliSurveyObj();
  //so->FillFromLocalFile("Survey_Points_PMD01.txt");//this file will be given 
  //by the surveyer after the installation of PMD.
  
  so->FillFromLocalFile("PMDGenSurveyPoints_v1.txt");//This file can be generated by the user.

  Int_t size = so->GetEntries();
  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\" \n", so->GetNrColumns());
  
  TObjArray *colNames = so->GetColumnNames();
  TObjArray   *points = so->GetData();
  
  Printf("Relevant points to be used for alignment procedure (in mm):"); 
  printf("%d \n",points->GetEntries());
  
  Float_t surveyFidX[28];
  Float_t surveyFidY[28];
  Float_t surveyFidZ[28];
  
  for (Int_t i = 0; i < points->GetEntries(); ++i)
    {
      
      surveyFidX[i] = (((AliSurveyPoint *) points->At(i))->GetX());
      surveyFidY[i] = (((AliSurveyPoint *) points->At(i))->GetY());
      surveyFidZ[i] = (((AliSurveyPoint *) points->At(i))->GetZ());
    }

  for (Int_t i=0; i < 28; i++)
    {
      // printf("%f %f %f\n",surveyFidX[i],surveyFidY[i],surveyFidZ[i]);

    }
  
  const Int_t kNDIM1 = 3;
  const Int_t kNDIM2 = 4;
  const Double_t kIdealOrig[kNDIM1] = {0., 0., 3645.}; // Geant values
  
  Int_t i;
  
  Double_t s1;
  Double_t ab1[kNDIM1], bc1[kNDIM1], nn1[kNDIM1], plane1[kNDIM1]; 
  Double_t nga1[kNDIM2][kNDIM1];
  
  Double_t s2;
  Double_t ab2[kNDIM1], bc2[kNDIM1], nn2[kNDIM1], plane2[kNDIM1];
  Double_t nga2[kNDIM2][kNDIM1];
 
  Double_t s3;
  Double_t ab3[kNDIM1], bc3[kNDIM1], nn3[kNDIM1], plane3[kNDIM1];
  Double_t nga3[kNDIM2][kNDIM1];
  
  Double_t s4;
  Double_t ab4[kNDIM1], bc4[kNDIM1], nn4[kNDIM1], plane4[kNDIM1];
  Double_t nga4[kNDIM2][kNDIM1];
  
  // These are the sequence of fiducial marks for sector-1,2,3 & 4 - to be 
  // given by the user.
  
  Int_t surseq1[kNDIM2] = {19, 20, 18, 17};
  Int_t surseq2[kNDIM2] = {15, 16, 14, 13};
  Int_t surseq3[kNDIM2] = {11, 12, 06, 05};
  Int_t surseq4[kNDIM2] = {27, 28, 22, 21};
  
  for (i = 0; i < 28; i++)
    {
      for (Int_t j = 0; j < 4; j++)
	{
	  if (surseq1[j] == i+1)
	    {
	      nga1[j][0] = surveyFidX[i];
	      nga1[j][1] = surveyFidY[i];
	      nga1[j][2] = surveyFidZ[i];
	    }
	  else if (surseq2[j] == i+1)
	    {
	      nga2[j][0] = surveyFidX[i];
	      nga2[j][1] = surveyFidY[i];
	      nga2[j][2] = surveyFidZ[i];
	    }
	  else if (surseq3[j] == i+1)
	    {
	      nga3[j][0] = surveyFidX[i];
	      nga3[j][1] = surveyFidY[i];
	      nga3[j][2] = surveyFidZ[i];
	    }
	  else if (surseq4[j] == i+1)
	    {
	      nga4[j][0] = surveyFidX[i];
	      nga4[j][1] = surveyFidY[i];
	      nga4[j][2] = surveyFidZ[i];
	    }
	}
      
    }
  
  // First vector on the plane of the fiducial marks.
  
  for(i = 0; i < kNDIM1; i++)
    {
      ab1[i] = nga1[1][i] - nga1[0][i];
      ab2[i] = nga2[1][i] - nga2[0][i];
      ab3[i] = nga3[1][i] - nga3[0][i];
      ab4[i] = nga4[1][i] - nga4[0][i];
    }
  
  // Second vector on the plane of the fiducial marks.
  
  for(i = 0; i < kNDIM1; i++)
    {
      bc1[i] = nga1[2][i] - nga1[1][i];
      bc2[i] = nga2[2][i] - nga2[1][i];
      bc3[i] = nga3[2][i] - nga3[1][i];
      bc4[i] = nga4[2][i] - nga4[1][i];
    }
  
  // Vector normal to the plane of the fiducial marks obtained
  // as cross product of the two vectors on the sector-1,2,3 and 4.
  
  // Vector normal to the sector-1.
  
  nn1[0] = ab1[1] * bc1[2] - ab1[2] * bc1[1];
  nn1[1] = ab1[2] * bc1[0] - ab1[0] * bc1[2];
  nn1[2] = ab1[0] * bc1[1] - ab1[1] * bc1[0];
  
  // Vector normal to the sector-2.
  
  nn2[0] = ab2[1] * bc2[2] - ab2[2] * bc2[1];
  nn2[1] = ab2[2] * bc2[0] - ab2[0] * bc2[2];
  nn2[2] = ab2[0] * bc2[1] - ab2[1] * bc2[0];
  
  // Vector normal to the sector-3.
  
  nn3[0] = ab3[1] * bc3[2] - ab3[2] * bc3[1];
  nn3[1] = ab3[2] * bc3[0] - ab3[0] * bc3[2];
  nn3[2] = ab3[0] * bc3[1] - ab3[1] * bc3[0];
  
  // Vector normal to the sector-4.
  
  nn4[0] = ab4[1] * bc4[2] - ab4[2] * bc4[1];
  nn4[1] = ab4[2] * bc4[0] - ab4[0] * bc4[2];
  nn4[2] = ab4[0] * bc4[1] - ab4[1] * bc4[0];
  
  Double_t sizen1 = TMath::Sqrt( nn1[0]*nn1[0] + nn1[1]*nn1[1] +
				 nn1[2]*nn1[2] );
  Double_t sizen2 = TMath::Sqrt( nn2[0]*nn2[0] + nn2[1]*nn2[1] +
				 nn2[2]*nn2[2] );
  Double_t sizen3 = TMath::Sqrt( nn3[0]*nn3[0] + nn3[1]*nn3[1] +
				 nn3[2]*nn3[2] );
  Double_t sizen4 = TMath::Sqrt( nn4[0]*nn4[0] + nn4[1]*nn4[1] +
				 nn4[2]*nn4[2] );
  
  if(sizen1 > 1.e-8)
    {
      s1 = Double_t(1.)/sizen1 ; //normalization factor
    }
  else
    {
      return 0;
    }
  
  if(sizen2 > 1.e-8)
    {
      s2 = Double_t(1.)/sizen2 ; //normalization factor
    }
  else
    {
      return 0;
    }
  
  if(sizen3 > 1.e-8)
    {
      s3 = Double_t(1.)/sizen3 ; //normalization factor
    }
  else
    {
      return 0;
    }
  
  if(sizen4 > 1.e-8)
    {
      s4 = Double_t(1.)/sizen4 ; //normalization factor
    }
  else
    {
      return 0;
    }
  
  // Plane expressed in the hessian normal form, see:
  // http://mathworld.wolfram.com/HessianNormalForm.html
  
  for(i = 0; i < kNDIM1; i++)
    {
      plane1[i] = nn1[i] * s1;
      plane2[i] = nn2[i] * s2;
      plane3[i] = nn3[i] * s3;
      plane4[i] = nn4[i] * s4;
    }
  
  cout<<"Unit vector normal to sector-1 : "<<plane1[0]
      <<" "<<plane1[1]<<" "<<plane1[2]<<endl;
  cout<<"Unit vector normal to sector-2 : "<<plane2[0]
      <<" "<<plane2[1]<<" "<<plane2[2]<<endl;
  cout<<"Unit vector normal to sector-3 : "<<plane3[0]
      <<" "<<plane3[1]<<" "<<plane3[2]<<endl;
  cout<<"Unit vector normal to sector-4 : "<<plane4[0]
      <<" "<<plane4[1]<<" "<<plane4[2]<<endl;
  
  // The center of the sector with fiducial marks as corners,
  // is the middle point of one diagonal. 
  
  Double_t orig1[kNDIM1], md1[kNDIM1];
  Double_t orig2[kNDIM1], md2[kNDIM1];
  Double_t orig3[kNDIM1], md3[kNDIM1];
  Double_t orig4[kNDIM1], md4[kNDIM1];
  
  for(i = 0; i < kNDIM1; i++)
    {
      md1[i] = (nga1[0][i] + nga1[1][i]) * 0.5;
      md2[i] = (nga2[2][i] + nga2[3][i]) * 0.5;
      md3[i] = (nga3[0][i] + nga3[2][i]) * 0.5;
      md4[i] = (nga4[0][i] + nga4[2][i]) * 0.5;
    }
  
  const Double_t kZdepth = 23.;//(Zdepth+zoffset) is the distance 
  //from surface to centre of the PMD. 
  
  for(i = 0; i < kNDIM1; i++)
    {
      orig1[i] = md1[i] - plane1[i]*kZdepth;
      orig2[i] = md2[i] - plane2[i]*kZdepth;
      orig3[i] = md3[i] - plane3[i]*kZdepth;
      orig4[i] = md4[i] - plane4[i]*kZdepth;
    }
  
  Double_t PMDorig1[kNDIM1];
  Double_t PMDorig2[kNDIM1];
  for(i = 0; i < kNDIM1; i++)
    {
      PMDorig1[i] = (orig1[i] + orig2[i]) * 0.5;
      PMDorig2[i] = (orig3[i] + orig4[i]) * 0.5;
    }
  
  // Get x,y local directions needed to write the global rotation matrix
  // for the surveyed volume by normalising vectors ab1 and bc1

  Double_t sx1 = TMath::Sqrt(ab1[0]*ab1[0] + ab1[1]*ab1[1] +
			     ab1[2]*ab1[2]);
  if(sx1 > 1.e-8)
    {
      for(i = 0; i < 3; i++)
	{
	  ab1[i] /= sx1;
	}
    }
  
  Double_t sy1 = TMath::Sqrt(bc1[0]*bc1[0] + bc1[1]*bc1[1] +
			     bc1[2]*bc1[2]);
  if(sy1 > 1.e-8)
    {
      for(i = 0; i < kNDIM1; i++)
	{
	  bc1[i] /= sy1;
	}
    }
  
  Double_t sx2 = TMath::Sqrt(ab2[0]*ab2[0] + ab2[1]*ab2[1] +
			     ab2[2]*ab2[2]);
  if(sx2 > 1.e-8)
    {
      for(i = 0; i < kNDIM1; i++)
	{
	  ab2[i] /= sx2;
	}
    }
  
  Double_t sy2 = TMath::Sqrt(bc2[0]*bc2[0] + bc2[1]*bc2[1] +
			     bc2[2]*bc2[2]);
  if(sy2 > 1.e-8)
    {
      for(i = 0; i < kNDIM1; i++)
	{
	  bc2[i] /= sy2;
	}
    }
  
  Double_t sx3 = TMath::Sqrt(ab3[0]*ab3[0] + ab3[1]*ab3[1] +
			     ab3[2]*ab3[2]);
  if(sx3 > 1.e-8)
    {
      for(i = 0; i < kNDIM1; i++)
	{
	  ab3[i] /= sx3;
	}
    }
  
  Double_t sy3 = TMath::Sqrt(bc3[0]*bc3[0] + bc3[1]*bc3[1] +
			     bc3[2]*bc3[2]);
  if(sy3 > 1.e-8)
    {
      for(i = 0; i < kNDIM1; i++)
	{
	  bc3[i] /= sy3;
	}
    }
  
  Double_t sx4 = TMath::Sqrt(ab4[0]*ab4[0] + ab4[1]*ab4[1] +
			     ab4[2]*ab4[2]);
  if(sx4 > 1.e-8)
    {
      for(i = 0; i < kNDIM1; i++)
	{
	  ab4[i] /= sx4;
	}
    }
  
  Double_t sy4 = TMath::Sqrt(bc4[0]*bc4[0] + bc4[1]*bc4[1] +
			     bc4[2]*bc4[2]);
  if(sy4 > 1.e-8)
    {
      for(i = 0; i < kNDIM1; i++)
	{
	  bc4[i] /= sy4;
	}
    }
  
  // The global matrix for the surveyed volume - ng_1
  
  Double_t rot1[9] = { ab1[0], bc1[0], plane1[0],
		       ab1[1], bc1[1], plane1[1],
		       ab1[2], bc1[2], plane1[2]};
  
  TGeoHMatrix ng_1;
  for(Int_t i=0; i<3; i++) orig1[i]*=0.1;// To convert the surveyed origin 
  //in cm, as in geometry all the distances are in cm.
  
  orig1[0]=orig1[0]- 0.321402;//offset in X.
  orig1[1]=orig1[1]- 0.074998;//offset in Y.
  ng_1.SetTranslation(orig1);
  ng_1.SetRotation(rot1);
  
  // cout<<"\n** Global Matrix from surveyed fiducial marks for sector-1 **\n";
  //ng_1.Print();
  
  Double_t rot2[9] = {ab2[0], bc2[0], plane2[0],
		      ab2[1], bc2[1], plane2[1],
		      ab2[2], bc2[2], plane2[2]};
  
  TGeoHMatrix ng_2;
  for(Int_t i=0; i<3; i++) orig2[i]*=0.1;
  orig2[0]=orig2[0]+ 0.321402;//offset in X.
  orig2[1]=orig2[1]+ 0.074998;//offset in Y.
  ng_2.SetTranslation(orig2);
  ng_2.SetRotation(rot2);
  
  // cout<<"\n** Global Matrix from surveyed fiducial marks for sector-2 **\n";
  // ng_2.Print();
  
  Double_t rot3[9] = {ab3[0], bc3[0], plane3[0],
		      ab3[1], bc3[1], plane3[1],
		      ab3[2], bc3[2], plane3[2]};
  
  TGeoHMatrix ng_3;
  for(Int_t i=0; i<3; i++) orig3[i]*=0.1;
  orig3[0]=orig3[0]+ 0.291602;//offset in X
  orig3[1]=orig3[1]+ 0.100001;//offset in Y
  ng_3.SetTranslation(orig3);
  ng_3.SetRotation(rot3);
  
  // cout<<"\n** Global Matrix from surveyed fiducial marks for sector-3 **\n";
  //ng_3.Print();
  
  
  Double_t rot4[9] = {ab4[0], bc4[0], plane4[0],
		      ab4[1], bc4[1], plane4[1],
		      ab4[2], bc4[2], plane4[2]};
  
  TGeoHMatrix ng_4;
  for(Int_t i=0; i<3; i++) orig4[i]*=0.1;
  orig4[0]=orig4[0]- 0.291602;//offset in X
  orig4[1]=orig4[1]- 0.100001;//offset in Y
  ng_4.SetTranslation(orig4);
  ng_4.SetRotation(rot4);
  
  //cout<<"\n** Global Matrix from surveyed fiducial marks for sector-4 **\n";
  //ng_4.Print();
  
  
  // To produce the alignment object for the given volume you would
  // then do something like this:
  // Calculate the global delta transformation as ng * g3^-1
  
  TGeoPhysicalNode* pn3_1 = gGeoManager->MakePhysicalNode("ALIC_1/EPM1_1");
  TGeoHMatrix gdelta_1 = g3_1->Inverse(); //now equal to the inverse of g3
  gdelta_1.MultiplyLeft(&ng_1);
  Int_t index = 0;
  Printf("The global delta transformation for sector-1");
  gdelta_1.Print();
  
  TGeoPhysicalNode* pn3_2 = gGeoManager->MakePhysicalNode("ALIC_1/EPM2_1");
  TGeoHMatrix gdelta_2 = g3_2->Inverse(); 
  gdelta_2.MultiplyLeft(&ng_2);
  Int_t index = 0;
  Printf("The global delta transformation for sector-2");
  gdelta_2.Print();
  
  TGeoPhysicalNode* pn3_3 = gGeoManager->MakePhysicalNode("ALIC_1/EPM3_1");
  TGeoHMatrix gdelta_3 = g3_3->Inverse(); 
  gdelta_3.MultiplyLeft(&ng_3);
  Int_t index = 0;
  Printf("The global delta transformation for sector-3");
  gdelta_3.Print();
  
  TGeoPhysicalNode* pn3_4 = gGeoManager->MakePhysicalNode("ALIC_1/EPM4_1");
  TGeoHMatrix gdelta_4 = g3_4->Inverse(); 
  gdelta_4.MultiplyLeft(&ng_4);
  Int_t index = 0;
  Printf("The global delta transformation for sector-4");
  gdelta_4.Print();
  
  new(mobj[0]) AliAlignObjMatrix("PMD/Sector1",index,gdelta_1,kTRUE);
  new(mobj[1]) AliAlignObjMatrix("PMD/Sector2",index,gdelta_2,kTRUE);
  new(mobj[2]) AliAlignObjMatrix("PMD/Sector3",index,gdelta_3,kTRUE);
  new(mobj[3]) AliAlignObjMatrix("PMD/Sector4",index,gdelta_4,kTRUE);
  
  
  TString strStorage(gSystem->Getenv("TOCDB"));
  if(strStorage != TString("kTRUE")){
    // save on file
    TFile f("PMDSurvey.root","RECREATE");
    if(!f) cerr<<"cannot open file for output\n";
    f.cd();
    f.WriteObject(array,"PMDSurveyObjs ","kSingleKey");
    f.Close();
  }else{
    // save in CDB storage
    AliCDBManager* cdb = AliCDBManager::Instance();
    AliCDBStorage* storage = cdb->GetStorage("local://$ALICE_ROOT/OCDB");
    AliCDBMetaData* mda = new AliCDBMetaData();
    mda->SetResponsible("   ");
    mda->SetComment("Alignment objects for PMD survey");
    AliCDBId id("PMD/Align/Data",0,AliCDBRunRange::Infinity());
    storage->Put(array,id,mda);
  }
  
  array->Delete();
}
 PMDSurveyToAlignment_v1.C:1
 PMDSurveyToAlignment_v1.C:2
 PMDSurveyToAlignment_v1.C:3
 PMDSurveyToAlignment_v1.C:4
 PMDSurveyToAlignment_v1.C:5
 PMDSurveyToAlignment_v1.C:6
 PMDSurveyToAlignment_v1.C:7
 PMDSurveyToAlignment_v1.C:8
 PMDSurveyToAlignment_v1.C:9
 PMDSurveyToAlignment_v1.C:10
 PMDSurveyToAlignment_v1.C:11
 PMDSurveyToAlignment_v1.C:12
 PMDSurveyToAlignment_v1.C:13
 PMDSurveyToAlignment_v1.C:14
 PMDSurveyToAlignment_v1.C:15
 PMDSurveyToAlignment_v1.C:16
 PMDSurveyToAlignment_v1.C:17
 PMDSurveyToAlignment_v1.C:18
 PMDSurveyToAlignment_v1.C:19
 PMDSurveyToAlignment_v1.C:20
 PMDSurveyToAlignment_v1.C:21
 PMDSurveyToAlignment_v1.C:22
 PMDSurveyToAlignment_v1.C:23
 PMDSurveyToAlignment_v1.C:24
 PMDSurveyToAlignment_v1.C:25
 PMDSurveyToAlignment_v1.C:26
 PMDSurveyToAlignment_v1.C:27
 PMDSurveyToAlignment_v1.C:28
 PMDSurveyToAlignment_v1.C:29
 PMDSurveyToAlignment_v1.C:30
 PMDSurveyToAlignment_v1.C:31
 PMDSurveyToAlignment_v1.C:32
 PMDSurveyToAlignment_v1.C:33
 PMDSurveyToAlignment_v1.C:34
 PMDSurveyToAlignment_v1.C:35
 PMDSurveyToAlignment_v1.C:36
 PMDSurveyToAlignment_v1.C:37
 PMDSurveyToAlignment_v1.C:38
 PMDSurveyToAlignment_v1.C:39
 PMDSurveyToAlignment_v1.C:40
 PMDSurveyToAlignment_v1.C:41
 PMDSurveyToAlignment_v1.C:42
 PMDSurveyToAlignment_v1.C:43
 PMDSurveyToAlignment_v1.C:44
 PMDSurveyToAlignment_v1.C:45
 PMDSurveyToAlignment_v1.C:46
 PMDSurveyToAlignment_v1.C:47
 PMDSurveyToAlignment_v1.C:48
 PMDSurveyToAlignment_v1.C:49
 PMDSurveyToAlignment_v1.C:50
 PMDSurveyToAlignment_v1.C:51
 PMDSurveyToAlignment_v1.C:52
 PMDSurveyToAlignment_v1.C:53
 PMDSurveyToAlignment_v1.C:54
 PMDSurveyToAlignment_v1.C:55
 PMDSurveyToAlignment_v1.C:56
 PMDSurveyToAlignment_v1.C:57
 PMDSurveyToAlignment_v1.C:58
 PMDSurveyToAlignment_v1.C:59
 PMDSurveyToAlignment_v1.C:60
 PMDSurveyToAlignment_v1.C:61
 PMDSurveyToAlignment_v1.C:62
 PMDSurveyToAlignment_v1.C:63
 PMDSurveyToAlignment_v1.C:64
 PMDSurveyToAlignment_v1.C:65
 PMDSurveyToAlignment_v1.C:66
 PMDSurveyToAlignment_v1.C:67
 PMDSurveyToAlignment_v1.C:68
 PMDSurveyToAlignment_v1.C:69
 PMDSurveyToAlignment_v1.C:70
 PMDSurveyToAlignment_v1.C:71
 PMDSurveyToAlignment_v1.C:72
 PMDSurveyToAlignment_v1.C:73
 PMDSurveyToAlignment_v1.C:74
 PMDSurveyToAlignment_v1.C:75
 PMDSurveyToAlignment_v1.C:76
 PMDSurveyToAlignment_v1.C:77
 PMDSurveyToAlignment_v1.C:78
 PMDSurveyToAlignment_v1.C:79
 PMDSurveyToAlignment_v1.C:80
 PMDSurveyToAlignment_v1.C:81
 PMDSurveyToAlignment_v1.C:82
 PMDSurveyToAlignment_v1.C:83
 PMDSurveyToAlignment_v1.C:84
 PMDSurveyToAlignment_v1.C:85
 PMDSurveyToAlignment_v1.C:86
 PMDSurveyToAlignment_v1.C:87
 PMDSurveyToAlignment_v1.C:88
 PMDSurveyToAlignment_v1.C:89
 PMDSurveyToAlignment_v1.C:90
 PMDSurveyToAlignment_v1.C:91
 PMDSurveyToAlignment_v1.C:92
 PMDSurveyToAlignment_v1.C:93
 PMDSurveyToAlignment_v1.C:94
 PMDSurveyToAlignment_v1.C:95
 PMDSurveyToAlignment_v1.C:96
 PMDSurveyToAlignment_v1.C:97
 PMDSurveyToAlignment_v1.C:98
 PMDSurveyToAlignment_v1.C:99
 PMDSurveyToAlignment_v1.C:100
 PMDSurveyToAlignment_v1.C:101
 PMDSurveyToAlignment_v1.C:102
 PMDSurveyToAlignment_v1.C:103
 PMDSurveyToAlignment_v1.C:104
 PMDSurveyToAlignment_v1.C:105
 PMDSurveyToAlignment_v1.C:106
 PMDSurveyToAlignment_v1.C:107
 PMDSurveyToAlignment_v1.C:108
 PMDSurveyToAlignment_v1.C:109
 PMDSurveyToAlignment_v1.C:110
 PMDSurveyToAlignment_v1.C:111
 PMDSurveyToAlignment_v1.C:112
 PMDSurveyToAlignment_v1.C:113
 PMDSurveyToAlignment_v1.C:114
 PMDSurveyToAlignment_v1.C:115
 PMDSurveyToAlignment_v1.C:116
 PMDSurveyToAlignment_v1.C:117
 PMDSurveyToAlignment_v1.C:118
 PMDSurveyToAlignment_v1.C:119
 PMDSurveyToAlignment_v1.C:120
 PMDSurveyToAlignment_v1.C:121
 PMDSurveyToAlignment_v1.C:122
 PMDSurveyToAlignment_v1.C:123
 PMDSurveyToAlignment_v1.C:124
 PMDSurveyToAlignment_v1.C:125
 PMDSurveyToAlignment_v1.C:126
 PMDSurveyToAlignment_v1.C:127
 PMDSurveyToAlignment_v1.C:128
 PMDSurveyToAlignment_v1.C:129
 PMDSurveyToAlignment_v1.C:130
 PMDSurveyToAlignment_v1.C:131
 PMDSurveyToAlignment_v1.C:132
 PMDSurveyToAlignment_v1.C:133
 PMDSurveyToAlignment_v1.C:134
 PMDSurveyToAlignment_v1.C:135
 PMDSurveyToAlignment_v1.C:136
 PMDSurveyToAlignment_v1.C:137
 PMDSurveyToAlignment_v1.C:138
 PMDSurveyToAlignment_v1.C:139
 PMDSurveyToAlignment_v1.C:140
 PMDSurveyToAlignment_v1.C:141
 PMDSurveyToAlignment_v1.C:142
 PMDSurveyToAlignment_v1.C:143
 PMDSurveyToAlignment_v1.C:144
 PMDSurveyToAlignment_v1.C:145
 PMDSurveyToAlignment_v1.C:146
 PMDSurveyToAlignment_v1.C:147
 PMDSurveyToAlignment_v1.C:148
 PMDSurveyToAlignment_v1.C:149
 PMDSurveyToAlignment_v1.C:150
 PMDSurveyToAlignment_v1.C:151
 PMDSurveyToAlignment_v1.C:152
 PMDSurveyToAlignment_v1.C:153
 PMDSurveyToAlignment_v1.C:154
 PMDSurveyToAlignment_v1.C:155
 PMDSurveyToAlignment_v1.C:156
 PMDSurveyToAlignment_v1.C:157
 PMDSurveyToAlignment_v1.C:158
 PMDSurveyToAlignment_v1.C:159
 PMDSurveyToAlignment_v1.C:160
 PMDSurveyToAlignment_v1.C:161
 PMDSurveyToAlignment_v1.C:162
 PMDSurveyToAlignment_v1.C:163
 PMDSurveyToAlignment_v1.C:164
 PMDSurveyToAlignment_v1.C:165
 PMDSurveyToAlignment_v1.C:166
 PMDSurveyToAlignment_v1.C:167
 PMDSurveyToAlignment_v1.C:168
 PMDSurveyToAlignment_v1.C:169
 PMDSurveyToAlignment_v1.C:170
 PMDSurveyToAlignment_v1.C:171
 PMDSurveyToAlignment_v1.C:172
 PMDSurveyToAlignment_v1.C:173
 PMDSurveyToAlignment_v1.C:174
 PMDSurveyToAlignment_v1.C:175
 PMDSurveyToAlignment_v1.C:176
 PMDSurveyToAlignment_v1.C:177
 PMDSurveyToAlignment_v1.C:178
 PMDSurveyToAlignment_v1.C:179
 PMDSurveyToAlignment_v1.C:180
 PMDSurveyToAlignment_v1.C:181
 PMDSurveyToAlignment_v1.C:182
 PMDSurveyToAlignment_v1.C:183
 PMDSurveyToAlignment_v1.C:184
 PMDSurveyToAlignment_v1.C:185
 PMDSurveyToAlignment_v1.C:186
 PMDSurveyToAlignment_v1.C:187
 PMDSurveyToAlignment_v1.C:188
 PMDSurveyToAlignment_v1.C:189
 PMDSurveyToAlignment_v1.C:190
 PMDSurveyToAlignment_v1.C:191
 PMDSurveyToAlignment_v1.C:192
 PMDSurveyToAlignment_v1.C:193
 PMDSurveyToAlignment_v1.C:194
 PMDSurveyToAlignment_v1.C:195
 PMDSurveyToAlignment_v1.C:196
 PMDSurveyToAlignment_v1.C:197
 PMDSurveyToAlignment_v1.C:198
 PMDSurveyToAlignment_v1.C:199
 PMDSurveyToAlignment_v1.C:200
 PMDSurveyToAlignment_v1.C:201
 PMDSurveyToAlignment_v1.C:202
 PMDSurveyToAlignment_v1.C:203
 PMDSurveyToAlignment_v1.C:204
 PMDSurveyToAlignment_v1.C:205
 PMDSurveyToAlignment_v1.C:206
 PMDSurveyToAlignment_v1.C:207
 PMDSurveyToAlignment_v1.C:208
 PMDSurveyToAlignment_v1.C:209
 PMDSurveyToAlignment_v1.C:210
 PMDSurveyToAlignment_v1.C:211
 PMDSurveyToAlignment_v1.C:212
 PMDSurveyToAlignment_v1.C:213
 PMDSurveyToAlignment_v1.C:214
 PMDSurveyToAlignment_v1.C:215
 PMDSurveyToAlignment_v1.C:216
 PMDSurveyToAlignment_v1.C:217
 PMDSurveyToAlignment_v1.C:218
 PMDSurveyToAlignment_v1.C:219
 PMDSurveyToAlignment_v1.C:220
 PMDSurveyToAlignment_v1.C:221
 PMDSurveyToAlignment_v1.C:222
 PMDSurveyToAlignment_v1.C:223
 PMDSurveyToAlignment_v1.C:224
 PMDSurveyToAlignment_v1.C:225
 PMDSurveyToAlignment_v1.C:226
 PMDSurveyToAlignment_v1.C:227
 PMDSurveyToAlignment_v1.C:228
 PMDSurveyToAlignment_v1.C:229
 PMDSurveyToAlignment_v1.C:230
 PMDSurveyToAlignment_v1.C:231
 PMDSurveyToAlignment_v1.C:232
 PMDSurveyToAlignment_v1.C:233
 PMDSurveyToAlignment_v1.C:234
 PMDSurveyToAlignment_v1.C:235
 PMDSurveyToAlignment_v1.C:236
 PMDSurveyToAlignment_v1.C:237
 PMDSurveyToAlignment_v1.C:238
 PMDSurveyToAlignment_v1.C:239
 PMDSurveyToAlignment_v1.C:240
 PMDSurveyToAlignment_v1.C:241
 PMDSurveyToAlignment_v1.C:242
 PMDSurveyToAlignment_v1.C:243
 PMDSurveyToAlignment_v1.C:244
 PMDSurveyToAlignment_v1.C:245
 PMDSurveyToAlignment_v1.C:246
 PMDSurveyToAlignment_v1.C:247
 PMDSurveyToAlignment_v1.C:248
 PMDSurveyToAlignment_v1.C:249
 PMDSurveyToAlignment_v1.C:250
 PMDSurveyToAlignment_v1.C:251
 PMDSurveyToAlignment_v1.C:252
 PMDSurveyToAlignment_v1.C:253
 PMDSurveyToAlignment_v1.C:254
 PMDSurveyToAlignment_v1.C:255
 PMDSurveyToAlignment_v1.C:256
 PMDSurveyToAlignment_v1.C:257
 PMDSurveyToAlignment_v1.C:258
 PMDSurveyToAlignment_v1.C:259
 PMDSurveyToAlignment_v1.C:260
 PMDSurveyToAlignment_v1.C:261
 PMDSurveyToAlignment_v1.C:262
 PMDSurveyToAlignment_v1.C:263
 PMDSurveyToAlignment_v1.C:264
 PMDSurveyToAlignment_v1.C:265
 PMDSurveyToAlignment_v1.C:266
 PMDSurveyToAlignment_v1.C:267
 PMDSurveyToAlignment_v1.C:268
 PMDSurveyToAlignment_v1.C:269
 PMDSurveyToAlignment_v1.C:270
 PMDSurveyToAlignment_v1.C:271
 PMDSurveyToAlignment_v1.C:272
 PMDSurveyToAlignment_v1.C:273
 PMDSurveyToAlignment_v1.C:274
 PMDSurveyToAlignment_v1.C:275
 PMDSurveyToAlignment_v1.C:276
 PMDSurveyToAlignment_v1.C:277
 PMDSurveyToAlignment_v1.C:278
 PMDSurveyToAlignment_v1.C:279
 PMDSurveyToAlignment_v1.C:280
 PMDSurveyToAlignment_v1.C:281
 PMDSurveyToAlignment_v1.C:282
 PMDSurveyToAlignment_v1.C:283
 PMDSurveyToAlignment_v1.C:284
 PMDSurveyToAlignment_v1.C:285
 PMDSurveyToAlignment_v1.C:286
 PMDSurveyToAlignment_v1.C:287
 PMDSurveyToAlignment_v1.C:288
 PMDSurveyToAlignment_v1.C:289
 PMDSurveyToAlignment_v1.C:290
 PMDSurveyToAlignment_v1.C:291
 PMDSurveyToAlignment_v1.C:292
 PMDSurveyToAlignment_v1.C:293
 PMDSurveyToAlignment_v1.C:294
 PMDSurveyToAlignment_v1.C:295
 PMDSurveyToAlignment_v1.C:296
 PMDSurveyToAlignment_v1.C:297
 PMDSurveyToAlignment_v1.C:298
 PMDSurveyToAlignment_v1.C:299
 PMDSurveyToAlignment_v1.C:300
 PMDSurveyToAlignment_v1.C:301
 PMDSurveyToAlignment_v1.C:302
 PMDSurveyToAlignment_v1.C:303
 PMDSurveyToAlignment_v1.C:304
 PMDSurveyToAlignment_v1.C:305
 PMDSurveyToAlignment_v1.C:306
 PMDSurveyToAlignment_v1.C:307
 PMDSurveyToAlignment_v1.C:308
 PMDSurveyToAlignment_v1.C:309
 PMDSurveyToAlignment_v1.C:310
 PMDSurveyToAlignment_v1.C:311
 PMDSurveyToAlignment_v1.C:312
 PMDSurveyToAlignment_v1.C:313
 PMDSurveyToAlignment_v1.C:314
 PMDSurveyToAlignment_v1.C:315
 PMDSurveyToAlignment_v1.C:316
 PMDSurveyToAlignment_v1.C:317
 PMDSurveyToAlignment_v1.C:318
 PMDSurveyToAlignment_v1.C:319
 PMDSurveyToAlignment_v1.C:320
 PMDSurveyToAlignment_v1.C:321
 PMDSurveyToAlignment_v1.C:322
 PMDSurveyToAlignment_v1.C:323
 PMDSurveyToAlignment_v1.C:324
 PMDSurveyToAlignment_v1.C:325
 PMDSurveyToAlignment_v1.C:326
 PMDSurveyToAlignment_v1.C:327
 PMDSurveyToAlignment_v1.C:328
 PMDSurveyToAlignment_v1.C:329
 PMDSurveyToAlignment_v1.C:330
 PMDSurveyToAlignment_v1.C:331
 PMDSurveyToAlignment_v1.C:332
 PMDSurveyToAlignment_v1.C:333
 PMDSurveyToAlignment_v1.C:334
 PMDSurveyToAlignment_v1.C:335
 PMDSurveyToAlignment_v1.C:336
 PMDSurveyToAlignment_v1.C:337
 PMDSurveyToAlignment_v1.C:338
 PMDSurveyToAlignment_v1.C:339
 PMDSurveyToAlignment_v1.C:340
 PMDSurveyToAlignment_v1.C:341
 PMDSurveyToAlignment_v1.C:342
 PMDSurveyToAlignment_v1.C:343
 PMDSurveyToAlignment_v1.C:344
 PMDSurveyToAlignment_v1.C:345
 PMDSurveyToAlignment_v1.C:346
 PMDSurveyToAlignment_v1.C:347
 PMDSurveyToAlignment_v1.C:348
 PMDSurveyToAlignment_v1.C:349
 PMDSurveyToAlignment_v1.C:350
 PMDSurveyToAlignment_v1.C:351
 PMDSurveyToAlignment_v1.C:352
 PMDSurveyToAlignment_v1.C:353
 PMDSurveyToAlignment_v1.C:354
 PMDSurveyToAlignment_v1.C:355
 PMDSurveyToAlignment_v1.C:356
 PMDSurveyToAlignment_v1.C:357
 PMDSurveyToAlignment_v1.C:358
 PMDSurveyToAlignment_v1.C:359
 PMDSurveyToAlignment_v1.C:360
 PMDSurveyToAlignment_v1.C:361
 PMDSurveyToAlignment_v1.C:362
 PMDSurveyToAlignment_v1.C:363
 PMDSurveyToAlignment_v1.C:364
 PMDSurveyToAlignment_v1.C:365
 PMDSurveyToAlignment_v1.C:366
 PMDSurveyToAlignment_v1.C:367
 PMDSurveyToAlignment_v1.C:368
 PMDSurveyToAlignment_v1.C:369
 PMDSurveyToAlignment_v1.C:370
 PMDSurveyToAlignment_v1.C:371
 PMDSurveyToAlignment_v1.C:372
 PMDSurveyToAlignment_v1.C:373
 PMDSurveyToAlignment_v1.C:374
 PMDSurveyToAlignment_v1.C:375
 PMDSurveyToAlignment_v1.C:376
 PMDSurveyToAlignment_v1.C:377
 PMDSurveyToAlignment_v1.C:378
 PMDSurveyToAlignment_v1.C:379
 PMDSurveyToAlignment_v1.C:380
 PMDSurveyToAlignment_v1.C:381
 PMDSurveyToAlignment_v1.C:382
 PMDSurveyToAlignment_v1.C:383
 PMDSurveyToAlignment_v1.C:384
 PMDSurveyToAlignment_v1.C:385
 PMDSurveyToAlignment_v1.C:386
 PMDSurveyToAlignment_v1.C:387
 PMDSurveyToAlignment_v1.C:388
 PMDSurveyToAlignment_v1.C:389
 PMDSurveyToAlignment_v1.C:390
 PMDSurveyToAlignment_v1.C:391
 PMDSurveyToAlignment_v1.C:392
 PMDSurveyToAlignment_v1.C:393
 PMDSurveyToAlignment_v1.C:394
 PMDSurveyToAlignment_v1.C:395
 PMDSurveyToAlignment_v1.C:396
 PMDSurveyToAlignment_v1.C:397
 PMDSurveyToAlignment_v1.C:398
 PMDSurveyToAlignment_v1.C:399
 PMDSurveyToAlignment_v1.C:400
 PMDSurveyToAlignment_v1.C:401
 PMDSurveyToAlignment_v1.C:402
 PMDSurveyToAlignment_v1.C:403
 PMDSurveyToAlignment_v1.C:404
 PMDSurveyToAlignment_v1.C:405
 PMDSurveyToAlignment_v1.C:406
 PMDSurveyToAlignment_v1.C:407
 PMDSurveyToAlignment_v1.C:408
 PMDSurveyToAlignment_v1.C:409
 PMDSurveyToAlignment_v1.C:410
 PMDSurveyToAlignment_v1.C:411
 PMDSurveyToAlignment_v1.C:412
 PMDSurveyToAlignment_v1.C:413
 PMDSurveyToAlignment_v1.C:414
 PMDSurveyToAlignment_v1.C:415
 PMDSurveyToAlignment_v1.C:416
 PMDSurveyToAlignment_v1.C:417
 PMDSurveyToAlignment_v1.C:418
 PMDSurveyToAlignment_v1.C:419
 PMDSurveyToAlignment_v1.C:420
 PMDSurveyToAlignment_v1.C:421
 PMDSurveyToAlignment_v1.C:422
 PMDSurveyToAlignment_v1.C:423
 PMDSurveyToAlignment_v1.C:424
 PMDSurveyToAlignment_v1.C:425
 PMDSurveyToAlignment_v1.C:426
 PMDSurveyToAlignment_v1.C:427
 PMDSurveyToAlignment_v1.C:428
 PMDSurveyToAlignment_v1.C:429
 PMDSurveyToAlignment_v1.C:430
 PMDSurveyToAlignment_v1.C:431
 PMDSurveyToAlignment_v1.C:432
 PMDSurveyToAlignment_v1.C:433
 PMDSurveyToAlignment_v1.C:434
 PMDSurveyToAlignment_v1.C:435
 PMDSurveyToAlignment_v1.C:436
 PMDSurveyToAlignment_v1.C:437
 PMDSurveyToAlignment_v1.C:438
 PMDSurveyToAlignment_v1.C:439
 PMDSurveyToAlignment_v1.C:440
 PMDSurveyToAlignment_v1.C:441
 PMDSurveyToAlignment_v1.C:442
 PMDSurveyToAlignment_v1.C:443
 PMDSurveyToAlignment_v1.C:444
 PMDSurveyToAlignment_v1.C:445
 PMDSurveyToAlignment_v1.C:446
 PMDSurveyToAlignment_v1.C:447
 PMDSurveyToAlignment_v1.C:448
 PMDSurveyToAlignment_v1.C:449
 PMDSurveyToAlignment_v1.C:450
 PMDSurveyToAlignment_v1.C:451
 PMDSurveyToAlignment_v1.C:452
 PMDSurveyToAlignment_v1.C:453
 PMDSurveyToAlignment_v1.C:454
 PMDSurveyToAlignment_v1.C:455
 PMDSurveyToAlignment_v1.C:456
 PMDSurveyToAlignment_v1.C:457
 PMDSurveyToAlignment_v1.C:458
 PMDSurveyToAlignment_v1.C:459
 PMDSurveyToAlignment_v1.C:460
 PMDSurveyToAlignment_v1.C:461
 PMDSurveyToAlignment_v1.C:462
 PMDSurveyToAlignment_v1.C:463
 PMDSurveyToAlignment_v1.C:464
 PMDSurveyToAlignment_v1.C:465
 PMDSurveyToAlignment_v1.C:466
 PMDSurveyToAlignment_v1.C:467
 PMDSurveyToAlignment_v1.C:468
 PMDSurveyToAlignment_v1.C:469
 PMDSurveyToAlignment_v1.C:470
 PMDSurveyToAlignment_v1.C:471
 PMDSurveyToAlignment_v1.C:472
 PMDSurveyToAlignment_v1.C:473
 PMDSurveyToAlignment_v1.C:474
 PMDSurveyToAlignment_v1.C:475
 PMDSurveyToAlignment_v1.C:476
 PMDSurveyToAlignment_v1.C:477
 PMDSurveyToAlignment_v1.C:478
 PMDSurveyToAlignment_v1.C:479
 PMDSurveyToAlignment_v1.C:480
 PMDSurveyToAlignment_v1.C:481
 PMDSurveyToAlignment_v1.C:482
 PMDSurveyToAlignment_v1.C:483
 PMDSurveyToAlignment_v1.C:484
 PMDSurveyToAlignment_v1.C:485
 PMDSurveyToAlignment_v1.C:486
 PMDSurveyToAlignment_v1.C:487
 PMDSurveyToAlignment_v1.C:488
 PMDSurveyToAlignment_v1.C:489
 PMDSurveyToAlignment_v1.C:490
 PMDSurveyToAlignment_v1.C:491
 PMDSurveyToAlignment_v1.C:492
 PMDSurveyToAlignment_v1.C:493
 PMDSurveyToAlignment_v1.C:494
 PMDSurveyToAlignment_v1.C:495
 PMDSurveyToAlignment_v1.C:496
 PMDSurveyToAlignment_v1.C:497
 PMDSurveyToAlignment_v1.C:498
 PMDSurveyToAlignment_v1.C:499
 PMDSurveyToAlignment_v1.C:500
 PMDSurveyToAlignment_v1.C:501
 PMDSurveyToAlignment_v1.C:502
 PMDSurveyToAlignment_v1.C:503
 PMDSurveyToAlignment_v1.C:504
 PMDSurveyToAlignment_v1.C:505
 PMDSurveyToAlignment_v1.C:506
 PMDSurveyToAlignment_v1.C:507
 PMDSurveyToAlignment_v1.C:508
 PMDSurveyToAlignment_v1.C:509
 PMDSurveyToAlignment_v1.C:510
 PMDSurveyToAlignment_v1.C:511
 PMDSurveyToAlignment_v1.C:512
 PMDSurveyToAlignment_v1.C:513
 PMDSurveyToAlignment_v1.C:514
 PMDSurveyToAlignment_v1.C:515
 PMDSurveyToAlignment_v1.C:516
 PMDSurveyToAlignment_v1.C:517
 PMDSurveyToAlignment_v1.C:518
 PMDSurveyToAlignment_v1.C:519
 PMDSurveyToAlignment_v1.C:520
 PMDSurveyToAlignment_v1.C:521
 PMDSurveyToAlignment_v1.C:522
 PMDSurveyToAlignment_v1.C:523
 PMDSurveyToAlignment_v1.C:524
 PMDSurveyToAlignment_v1.C:525
 PMDSurveyToAlignment_v1.C:526
 PMDSurveyToAlignment_v1.C:527
 PMDSurveyToAlignment_v1.C:528
 PMDSurveyToAlignment_v1.C:529
 PMDSurveyToAlignment_v1.C:530
 PMDSurveyToAlignment_v1.C:531
 PMDSurveyToAlignment_v1.C:532
 PMDSurveyToAlignment_v1.C:533
 PMDSurveyToAlignment_v1.C:534
 PMDSurveyToAlignment_v1.C:535
 PMDSurveyToAlignment_v1.C:536
 PMDSurveyToAlignment_v1.C:537
 PMDSurveyToAlignment_v1.C:538
 PMDSurveyToAlignment_v1.C:539
 PMDSurveyToAlignment_v1.C:540
 PMDSurveyToAlignment_v1.C:541
 PMDSurveyToAlignment_v1.C:542
 PMDSurveyToAlignment_v1.C:543
 PMDSurveyToAlignment_v1.C:544
 PMDSurveyToAlignment_v1.C:545
 PMDSurveyToAlignment_v1.C:546
 PMDSurveyToAlignment_v1.C:547
 PMDSurveyToAlignment_v1.C:548