ROOT logo
void PMDSurveyPointsGen_v1(){
  
  // Macro to generate survey points in the format of AliSurveyObj 
  // by giving some finite rotation and translation.
  
  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;
  
  
  
  // Hereafter the four ideal fiducial marks on the PMD 
  // are expressed in local coordinates. 
  //All the coordinates are expressed in cm here.
  const Double_t zsize   = 2.3;
  const Double_t zoffset = 0.0;
  const Double_t zdepth  = zsize + zoffset + g_vect_1[2];
  
  // Coordinates of four Ideal fudicial marks on the sector-1 of the PMD in 
  //global frame of reference.
  
  Double_t A1[3] = {12.025, 37.85, zdepth};// Fiducial mark # 19
  Double_t B1[3] = {74.275, 37.85, zdepth};// Fiducial mark # 20
  Double_t C1[3] = {74.275, 87.05, zdepth};// Fiducial mark # 18
  Double_t D1[3] = {12.025, 87.05, zdepth};// Fiducial mark # 17
     
  // Coordinates of four Ideal fudicial marks on the sector-2 of the PMD in 
  //global frame of reference.
    
  Double_t A2[3] = {-74.275, -87.05, zdepth};// Fiducial mark # 15
  Double_t B2[3] = {-12.025, -87.05, zdepth};// Fiducial mark # 16
  Double_t C2[3] = {-12.025, -37.85, zdepth};// Fiducial mark # 14
  Double_t D2[3] = {-74.275, -37.85, zdepth};// Fiducial mark # 13
  
  // Coordinates of four Ideal fudicial marks on the sector-3 of the PMD in 
  //global frame of reference.
  
  Double_t A3[3] = {-74.275, 11.15, zdepth};// Fiducial mark # 11
  Double_t B3[3] = {7.725, 11.15, zdepth};  // Fiducial mark # 12
  Double_t C3[3] = {7.725, 87.05, zdepth};  // Fiducial mark # 06
  Double_t D3[3] = {-74.25, 87.05, zdepth}; // Fiducial mark # 05
  
  // Coordinates of four Ideal fudicial marks on the sector-4 of the PMD in 
  //global frame of reference.
  
  Double_t A4[3] = {-7.725, -87.05, zdepth};// Fiducial mark # 27
  Double_t B4[3] = {74.275, -87.05, zdepth};// Fiducial mark # 28
  Double_t C4[3] = {74.275, -11.15, zdepth};// Fiducial mark # 22
  Double_t D4[3] = {-7.725, -11.15, zdepth};// Fiducial mark # 21
  
  // Let's  misalign the sector-1 for testing purpose only.
  for (Int_t i = 0; i < 3; i++) 
    {
      // To convert the coordinates of fiducial marks in local RS as those are
      // given  above in global RS.
      A1[i] = A1[i] - g_vect_1[i];
      B1[i] = B1[i] - g_vect_1[i];
      C1[i] = C1[i] - g_vect_1[i];
      D1[i] = D1[i] - g_vect_1[i];
      
    }
  
  
  //                    ^ local y
  //                    |
  //      D-------------|-------------C
  //      |             |             |
  //      |             |             |
  //      |             |             |
  //      |             |             |
  //      |             |             |
  //      |             |             |
  //  ------------------|------------------> local x
  //      |             |             |
  //      |             |             |
  //      |             |             |
  //      |             |             |
  //      |             |             |
  //      |             |             |
  //      A-------------|-------------B
  //
  // local z exiting the plane of the screen
   
  Double_t gA1[3], gB1[3], gC1[3], gD1[3];
  
  g3_1->LocalToMaster(A1,gA1);
  g3_1->LocalToMaster(B1,gB1);
  g3_1->LocalToMaster(C1,gC1);
  g3_1->LocalToMaster(D1,gD1);

  /*
  cout<<endl<<"Ideal fiducial marks coordinates in the global RS:1\n"<<
    "A1 "<<gA1[0]<<" "<<gA1[1]<<" "<<gA1[2]<<" "<<endl<<
    "B1 "<<gB1[0]<<" "<<gB1[1]<<" "<<gB1[2]<<" "<<endl<<
    "C1 "<<gC1[0]<<" "<<gC1[1]<<" "<<gC1[2]<<" "<<endl<<
    "D1 "<<gD1[0]<<" "<<gD1[1]<<" "<<gD1[2]<<" "<<endl;
  */
  
  // We apply a delta transformation to the surveyed vol. to represent
  // its real position, given below by ng3 and nl3, which differs from its
  // ideal position saved above in g3 and l3
  
  TGeoPhysicalNode* pn3_1 = gGeoManager->MakePhysicalNode("ALIC_1/EPM1_1");
  
  Double_t dphi_1   = 0.; //  tilt around Z
  Double_t dtheta_1 = 0.; //  tilt around X
  Double_t dpsi_1   = 0.; //  tilt around new Z
  
  Double_t dx_1 = 2.; // shift along X
  Double_t dy_1 = 3.; // shift along Y
  Double_t dz_1 = 4.; // shift along Z
  
  TGeoRotation* rrot_1 = new TGeoRotation("rot",dphi_1,dtheta_1,dpsi_1);
  TGeoCombiTrans localdelta_1 = *(new TGeoCombiTrans(dx_1,dy_1,dz_1, rrot_1));
    
  // new local matrix, representing real position
  TGeoHMatrix nlocal_1 = *l3_1 * localdelta_1;
  TGeoHMatrix* nl3_1 = new TGeoHMatrix(nlocal_1);
  pn3_1->Align(nl3_1);
  
  // Let's get the global matrix for later comparison
  TGeoHMatrix* ng3_1 = pn3_1->GetMatrix(); //"real" global matrix,what survey sees 
  printf("\n\n************  real global matrix for Sector-1 **************\n");
  ng3_1->Print();
  
  Double_t ngA1[3], ngB1[3], ngC1[3], ngD1[3];
  ng3_1->LocalToMaster(A1,ngA1);
  ng3_1->LocalToMaster(B1,ngB1);
  ng3_1->LocalToMaster(C1,ngC1);
  ng3_1->LocalToMaster(D1,ngD1);
  
  cout<<endl<<"Fiducial marks coordinates in the global RS given by survey:1\n"<<
    "A1 "<<ngA1[0]<<" "<<ngA1[1]<<" "<<ngA1[2]<<" "<<endl<<
    "B1 "<<ngB1[0]<<" "<<ngB1[1]<<" "<<ngB1[2]<<" "<<endl<<
    "C1 "<<ngC1[0]<<" "<<ngC1[1]<<" "<<ngC1[2]<<" "<<endl<<
    "D1 "<<ngD1[0]<<" "<<ngD1[1]<<" "<<ngD1[2]<<" "<<endl;
  
  
  // Let's  misalign the sector-2.
  for (Int_t i = 0; i < 3; i++) 
    {
      // To convert the coordinates of fiducial marks in local RS as those are
      // given  above in global RS.
      A2[i] = A2[i] - g_vect_2[i];
      B2[i] = B2[i] - g_vect_2[i];
      C2[i] = C2[i] - g_vect_2[i];
      D2[i] = D2[i] - g_vect_2[i];
      
    }
  
  Double_t gA2[3], gB2[3], gC2[3], gD2[3];
  
  g3_2->LocalToMaster(A2,gA2);
  g3_2->LocalToMaster(B2,gB2);
  g3_2->LocalToMaster(C2,gC2);
  g3_2->LocalToMaster(D2,gD2);
  
  /*
  cout<<endl<<"Ideal fiducial marks coordinates in the global RS:2\n"<<
    "A2 "<<gA2[0]<<" "<<gA2[1]<<" "<<gA2[2]<<" "<<endl<<
    "B2 "<<gB2[0]<<" "<<gB2[1]<<" "<<gB2[2]<<" "<<endl<<
    "C2 "<<gC2[0]<<" "<<gC2[1]<<" "<<gC2[2]<<" "<<endl<<
    "D2 "<<gD2[0]<<" "<<gD2[1]<<" "<<gD2[2]<<" "<<endl;
  */
  
  // We apply a delta transformation to the surveyed vol. to represent
  // its real position, given below by ng3 and nl3, which differs from its
  // ideal position saved above in g3 and l3
  
  TGeoPhysicalNode* pn3_2 = gGeoManager->MakePhysicalNode("ALIC_1/EPM2_1");
  
  Double_t dphi_2   = 0.; // tilt around Z
  Double_t dtheta_2 = 0.; // tilt around X
  Double_t dpsi_2   = 0.; // tilt around new Z
  
  Double_t dx_2   = 2.; // shift along X
  Double_t dy_2   = 3.; // shift along Y
  Double_t dz_2   = 4.; // shift along Z
  
  TGeoRotation* rrot_2 = new TGeoRotation("rot",dphi_2,dtheta_2,dpsi_2);
  TGeoCombiTrans localdelta_2 = *(new TGeoCombiTrans(dx_2,dy_2,dz_2, rrot_2));
  
  // new local matrix, representing real position
  TGeoHMatrix nlocal_2 = *l3_2 * localdelta_2;
  TGeoHMatrix* nl3_2 = new TGeoHMatrix(nlocal_2);
  pn3_2->Align(nl3_2);
  
  // Let's get the global matrix for later comparison
  TGeoHMatrix* ng3_2 = pn3_2->GetMatrix(); //real global matrix 
  printf("\n\n************  real global matrix for Sector-2 **************\n");
  ng3_2->Print();
  
  Double_t ngA2[3], ngB2[3], ngC2[3], ngD2[3];
  ng3_2->LocalToMaster(A2,ngA2);
  ng3_2->LocalToMaster(B2,ngB2);
  ng3_2->LocalToMaster(C2,ngC2);
  ng3_2->LocalToMaster(D2,ngD2);
  
  cout<<endl<<"Fiducial marks coordinates in the global RS given by survey:2\n"<<
    "A2 "<<ngA2[0]<<" "<<ngA2[1]<<" "<<ngA2[2]<<" "<<endl<<
    "B2 "<<ngB2[0]<<" "<<ngB2[1]<<" "<<ngB2[2]<<" "<<endl<<
    "C2 "<<ngC2[0]<<" "<<ngC2[1]<<" "<<ngC2[2]<<" "<<endl<<
    "D2 "<<ngD2[0]<<" "<<ngD2[1]<<" "<<ngD2[2]<<" "<<endl;
  
// Let's  misalign the sector-3.
  for (Int_t i = 0; i < 3; i++) 
    {
      // To convert the coordinates of fiducial marks in local RS as those are
      // given  above in global RS.
      A3[i] = A3[i] - g_vect_3[i];
      B3[i] = B3[i] - g_vect_3[i];
      C3[i] = C3[i] - g_vect_3[i];
      D3[i] = D3[i] - g_vect_3[i];
    }
  
  Double_t gA3[3], gB3[3], gC3[3], gD3[3];
  
  g3_3->LocalToMaster(A3,gA3);
  g3_3->LocalToMaster(B3,gB3);
  g3_3->LocalToMaster(C3,gC3);
  g3_3->LocalToMaster(D3,gD3);
  
  /*
  cout<<endl<<"Ideal fiducial marks coordinates in the global RS:3\n"<<
    "A3 "<<gA3[0]<<" "<<gA3[1]<<" "<<gA3[2]<<" "<<endl<<
    "B3 "<<gB3[0]<<" "<<gB3[1]<<" "<<gB3[2]<<" "<<endl<<
    "C3 "<<gC3[0]<<" "<<gC3[1]<<" "<<gC3[2]<<" "<<endl<<
    "D3 "<<gD3[0]<<" "<<gD3[1]<<" "<<gD3[2]<<" "<<endl;
  */

  // We apply a delta transformation to the surveyed vol. to represent
  // its real position, given below by ng3 and nl3, which differs from its
  // ideal position saved above in g3 and l3
  
  TGeoPhysicalNode* pn3_3 = gGeoManager->MakePhysicalNode("ALIC_1/EPM3_1");
  
  Double_t dphi_3   = 0.; //  tilt around Z
  Double_t dtheta_3 = 0.; //  tilt around X
  Double_t dpsi_3   = 0.; //  tilt around new Z
  
  Double_t dx_3   = 2.; // shift along X
  Double_t dy_3   = 3.; // shift along Y
  Double_t dz_3   = 4 ; // shift along Z
    
  TGeoRotation* rrot_3 = new TGeoRotation("rot",dphi_3,dtheta_3,dpsi_3);
  TGeoCombiTrans localdelta_3 = *(new TGeoCombiTrans(dx_3,dy_3,dz_3, rrot_3));
    
  // new local matrix, representing real position
  TGeoHMatrix nlocal_3 = *l3_3 * localdelta_3;
  TGeoHMatrix* nl3_3 = new TGeoHMatrix(nlocal_3);
  pn3_3->Align(nl3_3);
  
  // Let's get the global matrix for later comparison
  TGeoHMatrix* ng3_3 = pn3_3->GetMatrix(); //"real" global matrix,what survey sees 
  printf("\n\n************  real global matrix for Sector-3 **************\n");
  ng3_3->Print();
  
  Double_t ngA3[3], ngB3[3], ngC3[3], ngD3[3];
  ng3_3->LocalToMaster(A3,ngA3);
  ng3_3->LocalToMaster(B3,ngB3);
  ng3_3->LocalToMaster(C3,ngC3);
  ng3_3->LocalToMaster(D3,ngD3);
  
  cout<<endl<<"Fiducial marks coordinates in the global RS given by survey:3\n"<<
    "A3 "<<ngA3[0]<<" "<<ngA3[1]<<" "<<ngA3[2]<<" "<<endl<<
    "B3 "<<ngB3[0]<<" "<<ngB3[1]<<" "<<ngB3[2]<<" "<<endl<<
    "C3 "<<ngC3[0]<<" "<<ngC3[1]<<" "<<ngC3[2]<<" "<<endl<<
    "D3 "<<ngD3[0]<<" "<<ngD3[1]<<" "<<ngD3[2]<<" "<<endl;
 
  // Let's  misalign the sector-4.
  for (Int_t i = 0; i < 3; i++) 
    {
      // To convert the coordinates of fiducial marks in local RS as those are
      // given  above in global RS.
      A4[i] = A4[i] - g_vect_4[i];
      B4[i] = B4[i] - g_vect_4[i];
      C4[i] = C4[i] - g_vect_4[i];
      D4[i] = D4[i] - g_vect_4[i];
      
    }
  
  Double_t gA4[3], gB4[3], gC4[3], gD4[3];
  
  g3_4->LocalToMaster(A4,gA4);
  g3_4->LocalToMaster(B4,gB4);
  g3_4->LocalToMaster(C4,gC4);
  g3_4->LocalToMaster(D4,gD4);
  
  /*
  cout<<endl<<"Ideal fiducial marks coordinates in the global RS:4\n"<<
    "A4 "<<gA4[0]<<" "<<gA4[1]<<" "<<gA4[2]<<" "<<endl<<
    "B4 "<<gB4[0]<<" "<<gB4[1]<<" "<<gB4[2]<<" "<<endl<<
    "C4 "<<gC4[0]<<" "<<gC4[1]<<" "<<gC4[2]<<" "<<endl<<
    "D4 "<<gD4[0]<<" "<<gD4[1]<<" "<<gD4[2]<<" "<<endl;
  */

  // We apply a delta transformation to the surveyed vol. to represent
  // its real position, given below by ng3 and nl3, which differs from its
  // ideal position saved above in g3 and l3
  
  TGeoPhysicalNode* pn3_4 = gGeoManager->MakePhysicalNode("ALIC_1/EPM4_1");
  
  Double_t dphi_4   = 0.; //  tilt around Z
  Double_t dtheta_4 = 0.; //  tilt around X
  Double_t dpsi_4   = 0.; //  tilt around new Z
  
  Double_t dx_4   = 2.; // shift along X
  Double_t dy_4   = 3.; // shift along Y
  Double_t dz_4   = 4.; // shift along Z
  
    
  TGeoRotation* rrot_4 = new TGeoRotation("rot",dphi_4,dtheta_4,dpsi_4);
  TGeoCombiTrans localdelta_4 = *(new TGeoCombiTrans(dx_4,dy_4,dz_4, rrot_4));
    
  // new local matrix, representing real position
  TGeoHMatrix nlocal_4 = *l3_4 * localdelta_4;
  TGeoHMatrix* nl3_4 = new TGeoHMatrix(nlocal_4);
  pn3_4->Align(nl3_4);
  
  // Let's get the global matrix for later comparison
  TGeoHMatrix* ng3_4 = pn3_4->GetMatrix(); //"real" global matrix,what survey sees 
  printf("\n\n************  real global matrix for Sector-4 **************\n");
  ng3_4->Print();
  
  Double_t ngA4[3], ngB4[3], ngC4[3], ngD4[3];
  ng3_4->LocalToMaster(A4,ngA4);
  ng3_4->LocalToMaster(B4,ngB4);
  ng3_4->LocalToMaster(C4,ngC4);
  ng3_4->LocalToMaster(D4,ngD4);
  
  cout<<endl<<"Fiducial marks coordinates in the global RS given by survey:4\n"<<
    "A4 "<<ngA4[0]<<" "<<ngA4[1]<<" "<<ngA4[2]<<" "<<endl<<
    "B4 "<<ngB4[0]<<" "<<ngB4[1]<<" "<<ngB4[2]<<" "<<endl<<
    "C4 "<<ngC4[0]<<" "<<ngC4[1]<<" "<<ngC4[2]<<" "<<endl<<
    "D4 "<<ngD4[0]<<" "<<ngD4[1]<<" "<<ngD4[2]<<" "<<endl;
 

  Double_t ngP1[4][3], ngP2[4][3],ngP3[4][3], ngP4[4][3];
   
  for(Int_t i=0;i<4;i++)
    { 
      for (Int_t j=0; j<3; j++)
	{
	  ngP1[0][j] = ngA1[j];
	  ngP1[1][j] = ngB1[j];
	  ngP1[2][j] = ngC1[j];
	  ngP1[3][j] = ngD1[j];

	  ngP2[0][j] = ngA2[j];
	  ngP2[1][j] = ngB2[j];
	  ngP2[2][j] = ngC2[j];
	  ngP2[3][j] = ngD2[j];
	  
	  ngP3[0][j] = ngA3[j];
	  ngP3[1][j] = ngB3[j];
	  ngP3[2][j] = ngC3[j];
	  ngP3[3][j] = ngD3[j];
	  
	  ngP4[0][j] = ngA4[j];
	  ngP4[1][j] = ngB4[j];
	  ngP4[2][j] = ngC4[j];
	  ngP4[3][j] = ngD4[j];
  
	}
    }
  
  Float_t xx, yy, zz;
  Char_t seqno[6], PType[1], TUsed[1];
  Int_t precision;
  
  ofstream ftw;
  ftw.open("PMDGenSurveyPoints_v1.txt");

  ifstream ftr;
  ftr.open("Survey_Points_PMD01.txt",ios::in);
    
  Int_t nline = 0;
  const int Nrow=70;
  TString CommentLine[Nrow];
  TString tmp, tmp1;
  char line[80];
  Int_t surseq1[4] = {19, 20, 18, 17};
  Int_t surseq2[4] = {15, 16, 14, 13};
  Int_t surseq3[4] = {11, 12, 06, 05};
  Int_t surseq4[4] = {27, 28, 22, 21};
  
  while (nline<Nrow) 
    {
      ftr.getline(line,80, '\n');
      tmp = line;
      tmp1 = tmp(0,60);
      CommentLine[nline] = Strip(tmp1);
      
      ftw<<CommentLine[nline]<<endl;
      
      if (nline >= 40 && nline < 68)
	{ 
	  ftr>>seqno>>xx>>yy>>zz>>PType>>TUsed>>precision;
	  
	  // cout<<seqno<<"\t"<<xx<<"\t"<<yy<<"\t"<<zz<<"\t"<<PType<<"\t"<<TUsed<<
	  //"\t"<<precision<<endl;
	  
	  Int_t i= (nline-40)+1;
	  for (Int_t j=0;j<4;j++)
	    {	       
	      if (surseq1[j] == i)
		{
		  xx = ngP1[j][0]*10.0;
		  yy = ngP1[j][1]*10.0;
		  zz = ngP1[j][2]*10.0;
		  cout<<seqno<<"\t"<<xx<<"\t"<<yy<<"\t"<<zz<<"\t"<<PType<<
		    "\t"<<TUsed<< "\t"<<precision<<endl;   
		}
	     else if (surseq2[j] == i)
		{
		  xx = ngP2[j][0]*10.0;
		  yy = ngP2[j][1]*10.0;
		  zz = ngP2[j][2]*10.0;
		  cout<<seqno<<"\t"<<xx<<"\t"<<yy<<"\t"<<zz<<"\t"<<PType<<
		    "\t"<<TUsed<< "\t"<<precision<<endl;   
		}
	      else if (surseq3[j] == i)
		{
		  xx = ngP3[j][0]*10.0;
		  yy = ngP3[j][1]*10.0;
		  zz = ngP3[j][2]*10.0;
		  cout<<seqno<<"\t"<<xx<<"\t"<<yy<<"\t"<<zz<<"\t"<<PType<<
		    "\t"<<TUsed<< "\t"<<precision<<endl;   
		}
	     else if (surseq4[j] == i)
		{
		  xx = ngP4[j][0]*10.0;
		  yy = ngP4[j][1]*10.0;
		  zz = ngP4[j][2]*10.0;
		  cout<<seqno<<"\t"<<xx<<"\t"<<yy<<"\t"<<zz<<"\t"<<PType<<
		    "\t"<<TUsed<< "\t"<<precision<<endl;   
		}
	    }
	  ftw<<seqno<<"\t"<<xx<<"\t"<<yy<<"\t"<<zz<<"\t"<<PType<<"\t"<<TUsed<<
	    "\t"<<precision<<endl; 
	  
	}
      
      //cout << "CommentLine [" << nline<< "]: " << CommentLine[nline] <<endl;
      nline++;
    }
}
 PMDSurveyPointsGen_v1.C:1
 PMDSurveyPointsGen_v1.C:2
 PMDSurveyPointsGen_v1.C:3
 PMDSurveyPointsGen_v1.C:4
 PMDSurveyPointsGen_v1.C:5
 PMDSurveyPointsGen_v1.C:6
 PMDSurveyPointsGen_v1.C:7
 PMDSurveyPointsGen_v1.C:8
 PMDSurveyPointsGen_v1.C:9
 PMDSurveyPointsGen_v1.C:10
 PMDSurveyPointsGen_v1.C:11
 PMDSurveyPointsGen_v1.C:12
 PMDSurveyPointsGen_v1.C:13
 PMDSurveyPointsGen_v1.C:14
 PMDSurveyPointsGen_v1.C:15
 PMDSurveyPointsGen_v1.C:16
 PMDSurveyPointsGen_v1.C:17
 PMDSurveyPointsGen_v1.C:18
 PMDSurveyPointsGen_v1.C:19
 PMDSurveyPointsGen_v1.C:20
 PMDSurveyPointsGen_v1.C:21
 PMDSurveyPointsGen_v1.C:22
 PMDSurveyPointsGen_v1.C:23
 PMDSurveyPointsGen_v1.C:24
 PMDSurveyPointsGen_v1.C:25
 PMDSurveyPointsGen_v1.C:26
 PMDSurveyPointsGen_v1.C:27
 PMDSurveyPointsGen_v1.C:28
 PMDSurveyPointsGen_v1.C:29
 PMDSurveyPointsGen_v1.C:30
 PMDSurveyPointsGen_v1.C:31
 PMDSurveyPointsGen_v1.C:32
 PMDSurveyPointsGen_v1.C:33
 PMDSurveyPointsGen_v1.C:34
 PMDSurveyPointsGen_v1.C:35
 PMDSurveyPointsGen_v1.C:36
 PMDSurveyPointsGen_v1.C:37
 PMDSurveyPointsGen_v1.C:38
 PMDSurveyPointsGen_v1.C:39
 PMDSurveyPointsGen_v1.C:40
 PMDSurveyPointsGen_v1.C:41
 PMDSurveyPointsGen_v1.C:42
 PMDSurveyPointsGen_v1.C:43
 PMDSurveyPointsGen_v1.C:44
 PMDSurveyPointsGen_v1.C:45
 PMDSurveyPointsGen_v1.C:46
 PMDSurveyPointsGen_v1.C:47
 PMDSurveyPointsGen_v1.C:48
 PMDSurveyPointsGen_v1.C:49
 PMDSurveyPointsGen_v1.C:50
 PMDSurveyPointsGen_v1.C:51
 PMDSurveyPointsGen_v1.C:52
 PMDSurveyPointsGen_v1.C:53
 PMDSurveyPointsGen_v1.C:54
 PMDSurveyPointsGen_v1.C:55
 PMDSurveyPointsGen_v1.C:56
 PMDSurveyPointsGen_v1.C:57
 PMDSurveyPointsGen_v1.C:58
 PMDSurveyPointsGen_v1.C:59
 PMDSurveyPointsGen_v1.C:60
 PMDSurveyPointsGen_v1.C:61
 PMDSurveyPointsGen_v1.C:62
 PMDSurveyPointsGen_v1.C:63
 PMDSurveyPointsGen_v1.C:64
 PMDSurveyPointsGen_v1.C:65
 PMDSurveyPointsGen_v1.C:66
 PMDSurveyPointsGen_v1.C:67
 PMDSurveyPointsGen_v1.C:68
 PMDSurveyPointsGen_v1.C:69
 PMDSurveyPointsGen_v1.C:70
 PMDSurveyPointsGen_v1.C:71
 PMDSurveyPointsGen_v1.C:72
 PMDSurveyPointsGen_v1.C:73
 PMDSurveyPointsGen_v1.C:74
 PMDSurveyPointsGen_v1.C:75
 PMDSurveyPointsGen_v1.C:76
 PMDSurveyPointsGen_v1.C:77
 PMDSurveyPointsGen_v1.C:78
 PMDSurveyPointsGen_v1.C:79
 PMDSurveyPointsGen_v1.C:80
 PMDSurveyPointsGen_v1.C:81
 PMDSurveyPointsGen_v1.C:82
 PMDSurveyPointsGen_v1.C:83
 PMDSurveyPointsGen_v1.C:84
 PMDSurveyPointsGen_v1.C:85
 PMDSurveyPointsGen_v1.C:86
 PMDSurveyPointsGen_v1.C:87
 PMDSurveyPointsGen_v1.C:88
 PMDSurveyPointsGen_v1.C:89
 PMDSurveyPointsGen_v1.C:90
 PMDSurveyPointsGen_v1.C:91
 PMDSurveyPointsGen_v1.C:92
 PMDSurveyPointsGen_v1.C:93
 PMDSurveyPointsGen_v1.C:94
 PMDSurveyPointsGen_v1.C:95
 PMDSurveyPointsGen_v1.C:96
 PMDSurveyPointsGen_v1.C:97
 PMDSurveyPointsGen_v1.C:98
 PMDSurveyPointsGen_v1.C:99
 PMDSurveyPointsGen_v1.C:100
 PMDSurveyPointsGen_v1.C:101
 PMDSurveyPointsGen_v1.C:102
 PMDSurveyPointsGen_v1.C:103
 PMDSurveyPointsGen_v1.C:104
 PMDSurveyPointsGen_v1.C:105
 PMDSurveyPointsGen_v1.C:106
 PMDSurveyPointsGen_v1.C:107
 PMDSurveyPointsGen_v1.C:108
 PMDSurveyPointsGen_v1.C:109
 PMDSurveyPointsGen_v1.C:110
 PMDSurveyPointsGen_v1.C:111
 PMDSurveyPointsGen_v1.C:112
 PMDSurveyPointsGen_v1.C:113
 PMDSurveyPointsGen_v1.C:114
 PMDSurveyPointsGen_v1.C:115
 PMDSurveyPointsGen_v1.C:116
 PMDSurveyPointsGen_v1.C:117
 PMDSurveyPointsGen_v1.C:118
 PMDSurveyPointsGen_v1.C:119
 PMDSurveyPointsGen_v1.C:120
 PMDSurveyPointsGen_v1.C:121
 PMDSurveyPointsGen_v1.C:122
 PMDSurveyPointsGen_v1.C:123
 PMDSurveyPointsGen_v1.C:124
 PMDSurveyPointsGen_v1.C:125
 PMDSurveyPointsGen_v1.C:126
 PMDSurveyPointsGen_v1.C:127
 PMDSurveyPointsGen_v1.C:128
 PMDSurveyPointsGen_v1.C:129
 PMDSurveyPointsGen_v1.C:130
 PMDSurveyPointsGen_v1.C:131
 PMDSurveyPointsGen_v1.C:132
 PMDSurveyPointsGen_v1.C:133
 PMDSurveyPointsGen_v1.C:134
 PMDSurveyPointsGen_v1.C:135
 PMDSurveyPointsGen_v1.C:136
 PMDSurveyPointsGen_v1.C:137
 PMDSurveyPointsGen_v1.C:138
 PMDSurveyPointsGen_v1.C:139
 PMDSurveyPointsGen_v1.C:140
 PMDSurveyPointsGen_v1.C:141
 PMDSurveyPointsGen_v1.C:142
 PMDSurveyPointsGen_v1.C:143
 PMDSurveyPointsGen_v1.C:144
 PMDSurveyPointsGen_v1.C:145
 PMDSurveyPointsGen_v1.C:146
 PMDSurveyPointsGen_v1.C:147
 PMDSurveyPointsGen_v1.C:148
 PMDSurveyPointsGen_v1.C:149
 PMDSurveyPointsGen_v1.C:150
 PMDSurveyPointsGen_v1.C:151
 PMDSurveyPointsGen_v1.C:152
 PMDSurveyPointsGen_v1.C:153
 PMDSurveyPointsGen_v1.C:154
 PMDSurveyPointsGen_v1.C:155
 PMDSurveyPointsGen_v1.C:156
 PMDSurveyPointsGen_v1.C:157
 PMDSurveyPointsGen_v1.C:158
 PMDSurveyPointsGen_v1.C:159
 PMDSurveyPointsGen_v1.C:160
 PMDSurveyPointsGen_v1.C:161
 PMDSurveyPointsGen_v1.C:162
 PMDSurveyPointsGen_v1.C:163
 PMDSurveyPointsGen_v1.C:164
 PMDSurveyPointsGen_v1.C:165
 PMDSurveyPointsGen_v1.C:166
 PMDSurveyPointsGen_v1.C:167
 PMDSurveyPointsGen_v1.C:168
 PMDSurveyPointsGen_v1.C:169
 PMDSurveyPointsGen_v1.C:170
 PMDSurveyPointsGen_v1.C:171
 PMDSurveyPointsGen_v1.C:172
 PMDSurveyPointsGen_v1.C:173
 PMDSurveyPointsGen_v1.C:174
 PMDSurveyPointsGen_v1.C:175
 PMDSurveyPointsGen_v1.C:176
 PMDSurveyPointsGen_v1.C:177
 PMDSurveyPointsGen_v1.C:178
 PMDSurveyPointsGen_v1.C:179
 PMDSurveyPointsGen_v1.C:180
 PMDSurveyPointsGen_v1.C:181
 PMDSurveyPointsGen_v1.C:182
 PMDSurveyPointsGen_v1.C:183
 PMDSurveyPointsGen_v1.C:184
 PMDSurveyPointsGen_v1.C:185
 PMDSurveyPointsGen_v1.C:186
 PMDSurveyPointsGen_v1.C:187
 PMDSurveyPointsGen_v1.C:188
 PMDSurveyPointsGen_v1.C:189
 PMDSurveyPointsGen_v1.C:190
 PMDSurveyPointsGen_v1.C:191
 PMDSurveyPointsGen_v1.C:192
 PMDSurveyPointsGen_v1.C:193
 PMDSurveyPointsGen_v1.C:194
 PMDSurveyPointsGen_v1.C:195
 PMDSurveyPointsGen_v1.C:196
 PMDSurveyPointsGen_v1.C:197
 PMDSurveyPointsGen_v1.C:198
 PMDSurveyPointsGen_v1.C:199
 PMDSurveyPointsGen_v1.C:200
 PMDSurveyPointsGen_v1.C:201
 PMDSurveyPointsGen_v1.C:202
 PMDSurveyPointsGen_v1.C:203
 PMDSurveyPointsGen_v1.C:204
 PMDSurveyPointsGen_v1.C:205
 PMDSurveyPointsGen_v1.C:206
 PMDSurveyPointsGen_v1.C:207
 PMDSurveyPointsGen_v1.C:208
 PMDSurveyPointsGen_v1.C:209
 PMDSurveyPointsGen_v1.C:210
 PMDSurveyPointsGen_v1.C:211
 PMDSurveyPointsGen_v1.C:212
 PMDSurveyPointsGen_v1.C:213
 PMDSurveyPointsGen_v1.C:214
 PMDSurveyPointsGen_v1.C:215
 PMDSurveyPointsGen_v1.C:216
 PMDSurveyPointsGen_v1.C:217
 PMDSurveyPointsGen_v1.C:218
 PMDSurveyPointsGen_v1.C:219
 PMDSurveyPointsGen_v1.C:220
 PMDSurveyPointsGen_v1.C:221
 PMDSurveyPointsGen_v1.C:222
 PMDSurveyPointsGen_v1.C:223
 PMDSurveyPointsGen_v1.C:224
 PMDSurveyPointsGen_v1.C:225
 PMDSurveyPointsGen_v1.C:226
 PMDSurveyPointsGen_v1.C:227
 PMDSurveyPointsGen_v1.C:228
 PMDSurveyPointsGen_v1.C:229
 PMDSurveyPointsGen_v1.C:230
 PMDSurveyPointsGen_v1.C:231
 PMDSurveyPointsGen_v1.C:232
 PMDSurveyPointsGen_v1.C:233
 PMDSurveyPointsGen_v1.C:234
 PMDSurveyPointsGen_v1.C:235
 PMDSurveyPointsGen_v1.C:236
 PMDSurveyPointsGen_v1.C:237
 PMDSurveyPointsGen_v1.C:238
 PMDSurveyPointsGen_v1.C:239
 PMDSurveyPointsGen_v1.C:240
 PMDSurveyPointsGen_v1.C:241
 PMDSurveyPointsGen_v1.C:242
 PMDSurveyPointsGen_v1.C:243
 PMDSurveyPointsGen_v1.C:244
 PMDSurveyPointsGen_v1.C:245
 PMDSurveyPointsGen_v1.C:246
 PMDSurveyPointsGen_v1.C:247
 PMDSurveyPointsGen_v1.C:248
 PMDSurveyPointsGen_v1.C:249
 PMDSurveyPointsGen_v1.C:250
 PMDSurveyPointsGen_v1.C:251
 PMDSurveyPointsGen_v1.C:252
 PMDSurveyPointsGen_v1.C:253
 PMDSurveyPointsGen_v1.C:254
 PMDSurveyPointsGen_v1.C:255
 PMDSurveyPointsGen_v1.C:256
 PMDSurveyPointsGen_v1.C:257
 PMDSurveyPointsGen_v1.C:258
 PMDSurveyPointsGen_v1.C:259
 PMDSurveyPointsGen_v1.C:260
 PMDSurveyPointsGen_v1.C:261
 PMDSurveyPointsGen_v1.C:262
 PMDSurveyPointsGen_v1.C:263
 PMDSurveyPointsGen_v1.C:264
 PMDSurveyPointsGen_v1.C:265
 PMDSurveyPointsGen_v1.C:266
 PMDSurveyPointsGen_v1.C:267
 PMDSurveyPointsGen_v1.C:268
 PMDSurveyPointsGen_v1.C:269
 PMDSurveyPointsGen_v1.C:270
 PMDSurveyPointsGen_v1.C:271
 PMDSurveyPointsGen_v1.C:272
 PMDSurveyPointsGen_v1.C:273
 PMDSurveyPointsGen_v1.C:274
 PMDSurveyPointsGen_v1.C:275
 PMDSurveyPointsGen_v1.C:276
 PMDSurveyPointsGen_v1.C:277
 PMDSurveyPointsGen_v1.C:278
 PMDSurveyPointsGen_v1.C:279
 PMDSurveyPointsGen_v1.C:280
 PMDSurveyPointsGen_v1.C:281
 PMDSurveyPointsGen_v1.C:282
 PMDSurveyPointsGen_v1.C:283
 PMDSurveyPointsGen_v1.C:284
 PMDSurveyPointsGen_v1.C:285
 PMDSurveyPointsGen_v1.C:286
 PMDSurveyPointsGen_v1.C:287
 PMDSurveyPointsGen_v1.C:288
 PMDSurveyPointsGen_v1.C:289
 PMDSurveyPointsGen_v1.C:290
 PMDSurveyPointsGen_v1.C:291
 PMDSurveyPointsGen_v1.C:292
 PMDSurveyPointsGen_v1.C:293
 PMDSurveyPointsGen_v1.C:294
 PMDSurveyPointsGen_v1.C:295
 PMDSurveyPointsGen_v1.C:296
 PMDSurveyPointsGen_v1.C:297
 PMDSurveyPointsGen_v1.C:298
 PMDSurveyPointsGen_v1.C:299
 PMDSurveyPointsGen_v1.C:300
 PMDSurveyPointsGen_v1.C:301
 PMDSurveyPointsGen_v1.C:302
 PMDSurveyPointsGen_v1.C:303
 PMDSurveyPointsGen_v1.C:304
 PMDSurveyPointsGen_v1.C:305
 PMDSurveyPointsGen_v1.C:306
 PMDSurveyPointsGen_v1.C:307
 PMDSurveyPointsGen_v1.C:308
 PMDSurveyPointsGen_v1.C:309
 PMDSurveyPointsGen_v1.C:310
 PMDSurveyPointsGen_v1.C:311
 PMDSurveyPointsGen_v1.C:312
 PMDSurveyPointsGen_v1.C:313
 PMDSurveyPointsGen_v1.C:314
 PMDSurveyPointsGen_v1.C:315
 PMDSurveyPointsGen_v1.C:316
 PMDSurveyPointsGen_v1.C:317
 PMDSurveyPointsGen_v1.C:318
 PMDSurveyPointsGen_v1.C:319
 PMDSurveyPointsGen_v1.C:320
 PMDSurveyPointsGen_v1.C:321
 PMDSurveyPointsGen_v1.C:322
 PMDSurveyPointsGen_v1.C:323
 PMDSurveyPointsGen_v1.C:324
 PMDSurveyPointsGen_v1.C:325
 PMDSurveyPointsGen_v1.C:326
 PMDSurveyPointsGen_v1.C:327
 PMDSurveyPointsGen_v1.C:328
 PMDSurveyPointsGen_v1.C:329
 PMDSurveyPointsGen_v1.C:330
 PMDSurveyPointsGen_v1.C:331
 PMDSurveyPointsGen_v1.C:332
 PMDSurveyPointsGen_v1.C:333
 PMDSurveyPointsGen_v1.C:334
 PMDSurveyPointsGen_v1.C:335
 PMDSurveyPointsGen_v1.C:336
 PMDSurveyPointsGen_v1.C:337
 PMDSurveyPointsGen_v1.C:338
 PMDSurveyPointsGen_v1.C:339
 PMDSurveyPointsGen_v1.C:340
 PMDSurveyPointsGen_v1.C:341
 PMDSurveyPointsGen_v1.C:342
 PMDSurveyPointsGen_v1.C:343
 PMDSurveyPointsGen_v1.C:344
 PMDSurveyPointsGen_v1.C:345
 PMDSurveyPointsGen_v1.C:346
 PMDSurveyPointsGen_v1.C:347
 PMDSurveyPointsGen_v1.C:348
 PMDSurveyPointsGen_v1.C:349
 PMDSurveyPointsGen_v1.C:350
 PMDSurveyPointsGen_v1.C:351
 PMDSurveyPointsGen_v1.C:352
 PMDSurveyPointsGen_v1.C:353
 PMDSurveyPointsGen_v1.C:354
 PMDSurveyPointsGen_v1.C:355
 PMDSurveyPointsGen_v1.C:356
 PMDSurveyPointsGen_v1.C:357
 PMDSurveyPointsGen_v1.C:358
 PMDSurveyPointsGen_v1.C:359
 PMDSurveyPointsGen_v1.C:360
 PMDSurveyPointsGen_v1.C:361
 PMDSurveyPointsGen_v1.C:362
 PMDSurveyPointsGen_v1.C:363
 PMDSurveyPointsGen_v1.C:364
 PMDSurveyPointsGen_v1.C:365
 PMDSurveyPointsGen_v1.C:366
 PMDSurveyPointsGen_v1.C:367
 PMDSurveyPointsGen_v1.C:368
 PMDSurveyPointsGen_v1.C:369
 PMDSurveyPointsGen_v1.C:370
 PMDSurveyPointsGen_v1.C:371
 PMDSurveyPointsGen_v1.C:372
 PMDSurveyPointsGen_v1.C:373
 PMDSurveyPointsGen_v1.C:374
 PMDSurveyPointsGen_v1.C:375
 PMDSurveyPointsGen_v1.C:376
 PMDSurveyPointsGen_v1.C:377
 PMDSurveyPointsGen_v1.C:378
 PMDSurveyPointsGen_v1.C:379
 PMDSurveyPointsGen_v1.C:380
 PMDSurveyPointsGen_v1.C:381
 PMDSurveyPointsGen_v1.C:382
 PMDSurveyPointsGen_v1.C:383
 PMDSurveyPointsGen_v1.C:384
 PMDSurveyPointsGen_v1.C:385
 PMDSurveyPointsGen_v1.C:386
 PMDSurveyPointsGen_v1.C:387
 PMDSurveyPointsGen_v1.C:388
 PMDSurveyPointsGen_v1.C:389
 PMDSurveyPointsGen_v1.C:390
 PMDSurveyPointsGen_v1.C:391
 PMDSurveyPointsGen_v1.C:392
 PMDSurveyPointsGen_v1.C:393
 PMDSurveyPointsGen_v1.C:394
 PMDSurveyPointsGen_v1.C:395
 PMDSurveyPointsGen_v1.C:396
 PMDSurveyPointsGen_v1.C:397
 PMDSurveyPointsGen_v1.C:398
 PMDSurveyPointsGen_v1.C:399
 PMDSurveyPointsGen_v1.C:400
 PMDSurveyPointsGen_v1.C:401
 PMDSurveyPointsGen_v1.C:402
 PMDSurveyPointsGen_v1.C:403
 PMDSurveyPointsGen_v1.C:404
 PMDSurveyPointsGen_v1.C:405
 PMDSurveyPointsGen_v1.C:406
 PMDSurveyPointsGen_v1.C:407
 PMDSurveyPointsGen_v1.C:408
 PMDSurveyPointsGen_v1.C:409
 PMDSurveyPointsGen_v1.C:410
 PMDSurveyPointsGen_v1.C:411
 PMDSurveyPointsGen_v1.C:412
 PMDSurveyPointsGen_v1.C:413
 PMDSurveyPointsGen_v1.C:414
 PMDSurveyPointsGen_v1.C:415
 PMDSurveyPointsGen_v1.C:416
 PMDSurveyPointsGen_v1.C:417
 PMDSurveyPointsGen_v1.C:418
 PMDSurveyPointsGen_v1.C:419
 PMDSurveyPointsGen_v1.C:420
 PMDSurveyPointsGen_v1.C:421
 PMDSurveyPointsGen_v1.C:422
 PMDSurveyPointsGen_v1.C:423
 PMDSurveyPointsGen_v1.C:424
 PMDSurveyPointsGen_v1.C:425
 PMDSurveyPointsGen_v1.C:426
 PMDSurveyPointsGen_v1.C:427
 PMDSurveyPointsGen_v1.C:428
 PMDSurveyPointsGen_v1.C:429
 PMDSurveyPointsGen_v1.C:430
 PMDSurveyPointsGen_v1.C:431
 PMDSurveyPointsGen_v1.C:432
 PMDSurveyPointsGen_v1.C:433
 PMDSurveyPointsGen_v1.C:434
 PMDSurveyPointsGen_v1.C:435
 PMDSurveyPointsGen_v1.C:436
 PMDSurveyPointsGen_v1.C:437
 PMDSurveyPointsGen_v1.C:438
 PMDSurveyPointsGen_v1.C:439
 PMDSurveyPointsGen_v1.C:440
 PMDSurveyPointsGen_v1.C:441
 PMDSurveyPointsGen_v1.C:442
 PMDSurveyPointsGen_v1.C:443
 PMDSurveyPointsGen_v1.C:444
 PMDSurveyPointsGen_v1.C:445
 PMDSurveyPointsGen_v1.C:446
 PMDSurveyPointsGen_v1.C:447
 PMDSurveyPointsGen_v1.C:448
 PMDSurveyPointsGen_v1.C:449
 PMDSurveyPointsGen_v1.C:450
 PMDSurveyPointsGen_v1.C:451
 PMDSurveyPointsGen_v1.C:452
 PMDSurveyPointsGen_v1.C:453
 PMDSurveyPointsGen_v1.C:454
 PMDSurveyPointsGen_v1.C:455
 PMDSurveyPointsGen_v1.C:456
 PMDSurveyPointsGen_v1.C:457
 PMDSurveyPointsGen_v1.C:458
 PMDSurveyPointsGen_v1.C:459
 PMDSurveyPointsGen_v1.C:460
 PMDSurveyPointsGen_v1.C:461
 PMDSurveyPointsGen_v1.C:462
 PMDSurveyPointsGen_v1.C:463
 PMDSurveyPointsGen_v1.C:464
 PMDSurveyPointsGen_v1.C:465
 PMDSurveyPointsGen_v1.C:466
 PMDSurveyPointsGen_v1.C:467
 PMDSurveyPointsGen_v1.C:468
 PMDSurveyPointsGen_v1.C:469
 PMDSurveyPointsGen_v1.C:470
 PMDSurveyPointsGen_v1.C:471
 PMDSurveyPointsGen_v1.C:472
 PMDSurveyPointsGen_v1.C:473
 PMDSurveyPointsGen_v1.C:474
 PMDSurveyPointsGen_v1.C:475
 PMDSurveyPointsGen_v1.C:476
 PMDSurveyPointsGen_v1.C:477
 PMDSurveyPointsGen_v1.C:478
 PMDSurveyPointsGen_v1.C:479
 PMDSurveyPointsGen_v1.C:480
 PMDSurveyPointsGen_v1.C:481
 PMDSurveyPointsGen_v1.C:482
 PMDSurveyPointsGen_v1.C:483
 PMDSurveyPointsGen_v1.C:484
 PMDSurveyPointsGen_v1.C:485
 PMDSurveyPointsGen_v1.C:486
 PMDSurveyPointsGen_v1.C:487
 PMDSurveyPointsGen_v1.C:488
 PMDSurveyPointsGen_v1.C:489
 PMDSurveyPointsGen_v1.C:490
 PMDSurveyPointsGen_v1.C:491
 PMDSurveyPointsGen_v1.C:492
 PMDSurveyPointsGen_v1.C:493