ROOT logo
//*-- Author : Anar Rustamov

#include "halignmentgcosmics.h"
#include "halignmentggeom.h"
#include "halignmentgrotations.h"
#include "hgeomtransform.h"
#include "TH2F.h"
#include "TH1F.h"
#include "TMinuit.h"
#include "iostream"
#include "TMath.h"
#include "TFile.h"
#include "TCanvas.h"
#include "TNtuple.h"

using namespace std;
ClassImp(HAlignmentGCosmics)
  HAlignmentGCosmics::HAlignmentGCosmics()
{
  fAlignGeom  = new HAlignmentGGeom();
  fAlignRot   = new HAlignmentGRotations();
  fMinuit     = NULL;////new TMinuit(6);
  for(Int_t i = 0; i < 6; i++)
    {
      refTrans[i] = *(fAlignRot -> GetTransMdc(i,0)); 
      //      if(i==0) {cout<< "reftrans" <<endl; refTrans[i].print();}
      //gsi modulunun matrisi
      transGSIBefore[i] = refTrans[i];
      //yuxaridaki kimi    
      refTrans[i].transTo(transGSIBefore[0]); 
      transGSIAfter[i] =  refTrans[i];  
      transDubna[i] = *(fAlignRot -> GetTransMdc(i,1));
    }
    
  accRange = 10.;
  accRange3 = 10;    
  localAlign =0;    
    
  histoX0 = new TH1F("histoX0","histoX0",100,-20.,20.);
  histoY0 = new TH1F("histoY0","histoY0",100,-10.,10.);
  histoX0After = new TH1F("histoX0After","histoX0After",100,-20.,20.);
  histoY0After = new TH1F("histoY0After","histoY0After",100,-10.,10.);
  histoX1 = new TH1F("histoX1","histoX1",100,-20.,20.);
  histoY1 = new TH1F("histoY1","histoY1",100,-10.,10.);
  histoX1After = new TH1F("histoX1After","histoX1After",100,-20.,20.);
  histoY1After = new TH1F("histoY1After","histoY1After",100,-10.,10.);
  histoX2 = new TH1F("histoX2","histoX2",100,-20.,20.);
  histoY2 = new TH1F("histoY2","histoY2",100,-10.,10.);
  histoX2After = new TH1F("histoX2After","histoX2After",100,-20.,20.);
  histoY2After = new TH1F("histoY2After","histoY2After",100,-10.,10.);

  histoX03 = new TH1F("histoX03","histoX03",100,-20.,20.);
  histoY03 = new TH1F("histoY03","histoY03",100,-10.,10.);
  histoX0After3 = new TH1F("histoX0After3","histoX0After3",100,-20.,20.);
  histoY0After3 = new TH1F("histoY0After3","histoY0After3",100,-10.,10.);
  histoX13 = new TH1F("histoX13","histoX13",100,-20.,20.);
  histoY13 = new TH1F("histoY13","histoY13",100,-10.,10.);
  histoX1After3 = new TH1F("histoX1After3","histoX1After3",100,-20.,20.);
  histoY1After3 = new TH1F("histoY1After3","histoY1After3",100,-10.,10.);
  histoX23 = new TH1F("histoX23","histoX23",100,-20.,20.);
  histoY23 = new TH1F("histoY23","histoY23",100,-10.,10.);
  histoX2After3 = new TH1F("histoX2After3","histoX2After3",100,-20.,20.);
  histoY2After3 = new TH1F("histoY2After3","histoY2After3",100,-10.,10.);
}

void HAlignmentGCosmics::SetNtuple(TNtuple *_nt)
{
 nt = _nt;
 nt -> SetBranchAddress("x1",&x1); // yuxari dubna 
 nt -> SetBranchAddress("y1",&y1); // yuxari dubna
 nt -> SetBranchAddress("x2",&x2); // yuxari gsi 
 nt -> SetBranchAddress("y2",&y2); // yuxari gsi
 nt -> SetBranchAddress("x3",&x3); // ashagi gsi 
 nt -> SetBranchAddress("y3",&y3); // ashagi gsi
 nt -> SetBranchAddress("x4",&x4); // ashagi dubna 
 nt -> SetBranchAddress("y4",&y4); // ahsagi dubna
 nt -> SetBranchAddress("sec1",&sec1);
 nt -> SetBranchAddress("sec2",&sec2);
 nt -> SetBranchAddress("missing",&missing);
}

HAlignmentGCosmics::~HAlignmentGCosmics()
{
  if(fAlignGeom)
    {
      delete fAlignGeom;
      fAlignGeom=NULL;
    }
  if(fAlignRot)
    {
      delete fAlignRot;
      fAlignRot=NULL;
    }
  
  if(fMinuit)
    {
      delete fMinuit;
      fMinuit=NULL;
    }
}



void fcnCosmicsLocal(Int_t &npar, Double_t *gin, Double_t &f, Double_t *par, Int_t iflag)
{
  //bir sector birlikde chevrilir;
  static int count = 1;
  count++;
  HAlignmentGCosmics   *myObject   = (HAlignmentGCosmics*)(gMinuit -> GetObjectFit());
  HAlignmentGRotations *fAlignRot  = myObject -> GetAlignRot();
  HGeomTransform trans =  fAlignRot -> MakeTransMatrix(par[0], par[1], par[2], par[3], par[4], par[5]);
  HGeomTransform transMod[6];
  
  Int_t fixedSector = myObject -> GetFixedSector();
  
  for(Int_t i = 0; i < 6; ++i)
    {
      transMod[i] = myObject -> GetTransGSI("Old",i);
      if(i==fixedSector || i==(fixedSector+3))
      {
       transMod[i].transTo(trans);
      }
      if(fixedSector == -1) transMod[i].transTo(trans);
    }
  f =  myObject -> GetMinFunction(transMod);
  if(count%10 == 0) 
    cout<<"iter:  "<<count<<"  function  "<<f<<" "<<par[0]<<"  "<<par[1]<<"  "<<par[2]<<"  "<<par[3]<<"  "
                      <<par[4]<<"  "<<par[5]<<endl;
}



void fcnCosmics(Int_t &npar, Double_t *gin, Double_t &f, Double_t *par, Int_t iflag)
{
  static int count = 1;
  count++;
  HAlignmentGCosmics   *myObject   = (HAlignmentGCosmics*)(gMinuit -> GetObjectFit());
  HAlignmentGRotations *fAlignRot  = myObject -> GetAlignRot();
  HGeomTransform trans =  fAlignRot -> MakeTransMatrix(par[0], par[1], par[2], par[3], par[4], par[5]);
  HGeomTransform transMod[6];
  for(Int_t i = 0; i < 6; ++i)
    {
      transMod[i] = myObject -> GetRefTrans(i);
      transMod[i].transFrom(trans);
    }
  f =  myObject -> GetMinFunction(transMod);
  if(count%10 == 0) 
    cout<<"iter:  "<<count<<"  function  "<<f<<" "<<par[0]<<"  "<<par[1]<<"  "<<par[2]<<"  "<<par[3]<<"  "
                      <<par[4]<<"  "<<par[5]<<endl;
}

void HAlignmentGCosmics::Align()
{
  Int_t ierflg = 0;
  if(!gMinuit) fMinuit=new TMinuit(6);
  gMinuit->SetFCN(fcnCosmics);
  gMinuit->SetObjectFit(this);
  Double_t arglist[6];
  Double_t vstart[6];
  Double_t step[13];
  Double_t out[6];
  Double_t errOut[6];
 // Double_t low[6] ,up[6];

  fAlignRot -> GetEulerAngles (transGSIBefore[0], vstart[0], vstart[1], vstart[2]);
  fAlignRot -> GetTransVector (transGSIBefore[0], vstart[3], vstart[4], vstart[5]);
  for(Int_t i=0; i<6; i++)
    {
      step[i] = 0.001;

      //low[i]  = vstart[i] - .009;
      //up[i]   = vstart[i] + .009;
    }
  /*
  low[3]  = vstart[3] - 15.;
  low[4]  = vstart[4] - 15.;
  low[5]  = vstart[5] - 15.;
  up[3]   = vstart[3] + 15.;
  up[4]   = vstart[4] + 15.;
  up[5]   = vstart[5] + 15.;
  */
  step[3] = 0.05;
  step[4] = 0.5;
  step[5] = 0.5;
  /*
  gMinuit->mnparm(0,"phi", vstart[0],step[0],low[0],up[0],ierflg);
  gMinuit->mnparm(1,"psi",vstart[1], step[1],low[1],up[1],ierflg);
  gMinuit->mnparm(2,"theta", vstart[2], step[2],low[2],up[2],ierflg);
  gMinuit->mnparm(3,"x", vstart[3], step[3], low[3],up[3],ierflg);
  gMinuit->mnparm(4,"y",vstart[4], step[4],low[4],up[4],ierflg);
  gMinuit->mnparm(5,"z", vstart[5], step[5], low[5],up[5],ierflg);
 */


  gMinuit->mnparm(0,"phi", vstart[0],step[0],0,0,ierflg);
  gMinuit->mnparm(1,"psi",vstart[1], step[1],0,0,ierflg);
  gMinuit->mnparm(2,"theta", vstart[2], step[2],0,0,ierflg);
  gMinuit->mnparm(3,"x", vstart[3], step[3], 0,0,ierflg);
  gMinuit->mnparm(4,"y",vstart[4], step[4],0,0,ierflg);
  gMinuit->mnparm(5,"z", vstart[5], step[5], 0,0,ierflg);


  gMinuit->SetPrintLevel(-1);
  //     arglist[0] =1;
  //     gMinuit->mnexcm("SET NOW", arglist,1,ierflg);
  //gMinuit->SetErrorDef(0.5);
  gMinuit->SetErrorDef(1);
  arglist[0]=2;
  gMinuit->mnexcm("SET STR",arglist,1,ierflg);
  //arglist[0] = 1;
  //gMinuit->mnexcm("SET ERR",arglist ,1,ierflg);
  arglist[1] = 0.01;
  arglist[0] = 10000;
  
    gMinuit->mnexcm("SIMPLEX",arglist,1,ierflg);
    //gMinuit->mnexcm("MIGRAD",arglist,1,ierflg);
  ////////gMinuit->mnexcm("MINOS",arglist,1,ierflg);
  for (Int_t ii = 0; ii < 6; ii++)
    {
      gMinuit->GetParameter(ii,out[ii],errOut[ii]);
    }
  
  HGeomTransform transT = fAlignRot->MakeTransMatrix(out[0], out[1], out[2], out[3], out[4], out[5]);
  
  for (Int_t ii = 0; ii < 6; ii++)
    {
      transGSIAfter[ii].transFrom(transT);
    }
}



void HAlignmentGCosmics::AlignLocal()
{
  localAlign = 1;
  Int_t ierflg = 0;
  if(!gMinuit) fMinuit=new TMinuit(6);
  gMinuit->SetFCN(fcnCosmicsLocal);
  gMinuit->SetObjectFit(this);
  Double_t arglist[6];
  Double_t vstart[6] = {0.};
  
  vstart[0] = acos(-1.)/2.;
  vstart[2] = -1.*vstart[0];
  
  //Double_t low[6],up[6];
  Double_t step[13];
  Double_t out[6];
  Double_t errOut[6];

  for(Int_t i=0; i<6; i++)
    {
      step[i] = 0.001;
      //low[i]  = vstart[i] - .009;
      //up[i]   = vstart[i] + .009;
    }
  /*
  low[3]  = vstart[3] - 15.;
  low[4]  = vstart[4] - 15.;
  low[5]  = vstart[5] - 15.;
  up[3]   = vstart[3] + 15.;
  up[4]   = vstart[4] + 15.;
  up[5]   = vstart[5] + 15.;
  */
  step[3] = 0.005;
  step[4] = 0.005;
  step[5] = 0.005;
  /*
  gMinuit->mnparm(0,"phi", vstart[0],step[0],low[0],up[0],ierflg);
  gMinuit->mnparm(1,"psi",vstart[1], step[1],low[1],up[1],ierflg);
  gMinuit->mnparm(2,"theta", vstart[2], step[2],low[2],up[2],ierflg);
  gMinuit->mnparm(3,"x", vstart[3], step[3], low[3],up[3],ierflg);
  gMinuit->mnparm(4,"y",vstart[4], step[4],low[4],up[4],ierflg);
  gMinuit->mnparm(5,"z", vstart[5], step[5], low[5],up[5],ierflg);
 */


  gMinuit->mnparm(0,"phi", vstart[0],step[0],0,0,ierflg);
  gMinuit->mnparm(1,"psi",vstart[1], step[1],0,0,ierflg);
  gMinuit->mnparm(2,"theta", vstart[2], step[2],0,0,ierflg);
  gMinuit->mnparm(3,"x", vstart[3], step[3], 0,0,ierflg);
  gMinuit->mnparm(4,"y",vstart[4], step[4],0,0,ierflg);
  gMinuit->mnparm(5,"z", vstart[5], step[5], 0,0,ierflg);


  gMinuit->SetPrintLevel(-1);
  //     arglist[0] =1;
  //     gMinuit->mnexcm("SET NOW", arglist,1,ierflg);
  //gMinuit->SetErrorDef(0.5);
  gMinuit->SetErrorDef(1);
  arglist[0]=2;
  gMinuit->mnexcm("SET STR",arglist,1,ierflg);
  //arglist[0] = 1;
  //gMinuit->mnexcm("SET ERR",arglist ,1,ierflg);
  arglist[1] = 0.01;
  arglist[0] = 10000;
  
    gMinuit->mnexcm("SIMPLEX",arglist,1,ierflg);
    //gMinuit->mnexcm("MIGRAD",arglist,1,ierflg);
  ////////gMinuit->mnexcm("MINOS",arglist,1,ierflg);
  for (Int_t ii = 0; ii < 6; ii++)
    {
      gMinuit->GetParameter(ii,out[ii],errOut[ii]);
    }
  
  HGeomTransform transT = fAlignRot->MakeTransMatrix(out[0], out[1], out[2], out[3], out[4], out[5]);
  
  for (Int_t ii = 0; ii < 6; ii++)
    {
      transGSIAfter[ii] = transGSIBefore[ii];
      if(ii == fixedSector || ii == (fixedSector+3))
      transGSIAfter[ii].transTo(transT);
      if(fixedSector == -1 ) transGSIAfter[ii].transTo(transT);
    }
}

 

void HAlignmentGCosmics::checkAlignment()
{
  cout<<"checking the alignment results "<<endl;
  cout<<"checking the alignment results "<<endl;
  cout<<"checking the alignment results "<<endl;
  cout<<"checking the alignment results "<<endl;
  cout<<"checking the alignment results "<<endl;
  GetMinFunction(transGSIBefore, kTRUE);
  GetMinFunction(transGSIAfter,  kTRUE,"After");
    TFile f("checkalignment.root","recreate");
    histoX0 -> Write();
    histoY0 -> Write();
    histoX0After -> Write();
    histoY0After -> Write();
    
    histoX1 -> Write();
    histoY1 -> Write();
    histoX1After -> Write();
    histoY1After -> Write();
    
    histoX2 -> Write();
    histoY2 -> Write();
    histoX2After -> Write();
    histoY2After -> Write();
    
    histoX0After -> SetLineColor(2);
    histoY0After -> SetLineColor(2);
    histoX1After -> SetLineColor(2);
    histoY1After -> SetLineColor(2);
    histoX2After -> SetLineColor(2);
    histoY2After -> SetLineColor(2);
    
    
    TCanvas *c1 = new TCanvas();
    c1 -> Divide(2,3);
    c1->cd(1);
    histoX0 -> Draw();
    histoX0After -> Draw("sames");
    c1->cd(2);
    histoY0 -> Draw();
    histoY0After -> Draw("sames");
    
    c1->cd(3);
    histoX1 -> Draw();
    histoX1After -> Draw("sames");
    c1->cd(4);
    histoY1 -> Draw();
    histoY1After -> Draw("sames");
    
    c1->cd(5);
    histoX2 -> Draw();
    histoX2After -> Draw("sames");
    c1->cd(6);
    histoY2 -> Draw();
    histoY2After -> Draw("sames");
    
     TCanvas *c2 = new TCanvas();
    c2 -> Divide(2,3);
    c2->cd(1);
    histoX0After -> Draw();
    c2->cd(2);
    histoY0After -> Draw();
    
    c2->cd(3);
    histoX1After -> Draw();
    c2->cd(4);
    histoY1After -> Draw();
    
    c2->cd(5);
    histoX2After -> Draw();
    c2->cd(6);
    histoY2After -> Draw();

    c1 -> Write();
    c2 -> Write(); 



    //////////

    histoX03 -> Write();
    histoY03 -> Write();
    histoX0After3 -> Write();
    histoY0After3 -> Write();
    
    histoX13 -> Write();
    histoY13 -> Write();
    histoX1After3 -> Write();
    histoY1After3 -> Write();
    
    histoX23 -> Write();
    histoY23 -> Write();
    histoX2After3 -> Write();
    histoY2After3 -> Write();
    
    histoX0After3 -> SetLineColor(2);
    histoY0After3 -> SetLineColor(2);
    histoX1After3 -> SetLineColor(2);
    histoY1After3 -> SetLineColor(2);
    histoX2After3 -> SetLineColor(2);
    histoY2After3 -> SetLineColor(2);
    
    
    TCanvas *c3 = new TCanvas();
    c3 -> Divide(2,3);
    c3->cd(1);
    histoX03 -> Draw();
    histoX0After3 -> Draw("sames");
    c3->cd(2);
    histoY03 -> Draw();
    histoY0After3 -> Draw("sames");
    
    c3->cd(3);
    histoX13 -> Draw();
    histoX1After3 -> Draw("sames");
    c3->cd(4);
    histoY13 -> Draw();
    histoY1After3 -> Draw("sames");
    
    c3->cd(5);
    histoX23 -> Draw();
    histoX2After3 -> Draw("sames");
    c3->cd(6);
    histoY23 -> Draw();
    histoY2After3 -> Draw("sames");
    
    c3 -> Write();

   

 }

HGeomTransform HAlignmentGCosmics::GetTransGSI(TString option,Int_t mod)
{
  if (option=="Old")
     return transGSIBefore[mod];
     else if(option=="New")
       return transGSIAfter[mod]; 
      else 
        { 
	  HGeomTransform test;
	  return test;
	}
}

Float_t HAlignmentGCosmics::GetMinFunction(HGeomTransform *trans, Bool_t isFill, TString option)
{


  HGeomVector point1, Point1;
  HGeomVector point2;
  HGeomVector point3;
  HGeomVector point4, Point4;
  HGeomVector diff1, diff2;
  HGeomVector POINTS[4];  

  Float_t diff = 0;
    
  Int_t nentries = nt -> GetEntries();
  //    nentries  = 5000;
  for(Int_t i = 0; i < nentries; i++)  
    {
    /*
      if(!isFill)
      {
       //if(sec1 == 0) continue;
       if(sec1 == 0)  continue;
      }
    */  
      //      if(i%1000000 ==0) cout<<"reading ntuple finished "<<i<<" of "<<nentries<<endl;
      nt->GetEntry(i);

      point1.setXYZ(x1, y1, 0.); // module sisteminde;
      point2.setXYZ(x2, y2, 0.); // module sisteminde;
      point3.setXYZ(x3, y3, 0.); // module sisteminde;
      point4.setXYZ(x4, y4, 0.); // module sisteminde;

      POINTS[0] = point1;
      POINTS[1] = point2;
      POINTS[2] = point3;
      POINTS[3] = point4;


      if(localAlign && fixedSector!= -1 && ((Int_t)sec1 != fixedSector && (Int_t)sec2 != fixedSector)) continue; 
      
      if(missing !=0 ) 
      {/*cout<<"check!!! missing == "<<missing<<endl;*/
      diff += GetMinFunction3(POINTS,trans,isFill,option); continue;
      }
     

      point2 = trans[(Int_t)sec1].transFrom(point2); // in lab
      point3 = trans[(Int_t)sec2].transFrom(point3); // in lab
      Point1 = fAlignGeom ->  CalcIntersection(point3,point2,transDubna[(Int_t)sec1]); //in lab
      Point4 = fAlignGeom ->  CalcIntersection(point2,point3,transDubna[(Int_t)sec2]); //in lab

      
      HGeomVector point1Lab = transDubna[(Int_t)sec1].transFrom(point1); // in lab
      HGeomVector point4Lab = transDubna[(Int_t)sec2].transFrom(point4); // in lab
      
      
      
      if(!isFill)
      {   
      if(fAlignGeom ->  CalcDistanceToLine(point2,point1Lab,point4Lab) > accRange ) continue;
      if(fAlignGeom ->  CalcDistanceToLine(point3,point1Lab,point4Lab) > accRange ) continue;
      }
       
      if(isFill)
	{
	  Point1 = transDubna[(Int_t)sec1].transTo(Point1); //in module
	  Point4 = transDubna[(Int_t)sec2].transTo(Point4); //in module
	}
      
      else
	{ 
	  //do the same as before
	  Point1 = transDubna[(Int_t)sec1].transTo(Point1); //in module
	  Point4 = transDubna[(Int_t)sec2].transTo(Point4); //in module
	}
       	
      /*
      else
	{

    
	//  point1 =  point1Lab;//transDubna[(Int_t)sec1].transFrom(point1); // in lab
	//  point4 =  point4Lab; //transDubna[(Int_t)sec2].transFrom(point4); // in lab
	  
	  Point1 = transDubna[(Int_t)sec1].transTo(Point1); //in module
          Point4 = transDubna[(Int_t)sec2].transTo(Point4); //in module
	  point1 =  fAlignRot ->  TransMdc(point1,"FromModToSec",(Int_t)sec1,1); //in sec
	  point4 =  fAlignRot ->  TransMdc(point4,"FromModToSec",(Int_t)sec2,1); //in sec                
	  Point1 =  fAlignRot ->  TransMdc(Point1,"FromModToSec",(Int_t)sec1,1); //in sec
	  Point4 =  fAlignRot ->  TransMdc(Point4,"FromModToSec",(Int_t)sec2,1); //in sec
	}
      */
      diff1  = point1 - Point1;
      diff2  = point4 - Point4;
      if(isFill) fillHistograms(diff1, diff2, (Int_t)sec1, option);

      diff += diff1.getX()*diff1.getX()/6. + diff1.getY()*diff1.getY();// + diff1.getZ()*diff1.getZ();
      diff += diff2.getX()*diff2.getX()/6. + diff2.getY()*diff2.getY();// + diff2.getZ()*diff2.getZ();
 
    }

  return diff;
}

Float_t HAlignmentGCosmics::GetMinFunction3(HGeomVector *POINTS,HGeomTransform *trans, Bool_t isFill,
 TString option)
{
  HGeomVector point1, point2, point3, point4;
  HGeomVector Point1, Point4;
  point1 = POINTS[0];
  point2 = POINTS[1];
  point3 = POINTS[2];
  point4 = POINTS[3];
  HGeomVector DIFF;

  if(missing == 1)
    {
      //top dubna is missing
      point2 = trans[(Int_t)sec1].transFrom(point2); // in lab
      point3 = trans[(Int_t)sec2].transFrom(point3); // in lab
      Point4 = fAlignGeom ->  CalcIntersection(point2,point3,transDubna[(Int_t)sec2]); //in lab
      HGeomVector point4Lab = transDubna[(Int_t)sec2].transFrom(point4); // in lab
      if(!isFill)
	{   
	  if(fAlignGeom ->  CalcDistanceToLine(point2,point3,point4Lab) > accRange3 ) return 0;
	}
      Point4 = transDubna[(Int_t)sec2].transTo(Point4); //in module    
      
      DIFF  = point4 - Point4;
      if(isFill) fillHistograms3(DIFF,(Int_t)sec1, option);
      return (DIFF.getX()*DIFF.getX()/6. + DIFF.getY()*DIFF.getY());
    }
  else 
    if(missing == 4)
      {
	//bottom dubna is missing
	point2 = trans[(Int_t)sec1].transFrom(point2); // in lab
	point3 = trans[(Int_t)sec2].transFrom(point3); // in lab
	Point1 = fAlignGeom ->  CalcIntersection(point3,point2,transDubna[(Int_t)sec1]); //in lab  
	HGeomVector point1Lab = transDubna[(Int_t)sec1].transFrom(point1); // in lab
	if(!isFill)
	  {   
	    if(fAlignGeom ->  CalcDistanceToLine(point3,point2,point1Lab) > accRange3 ) return 0;
	  }
	Point1 = transDubna[(Int_t)sec1].transTo(Point1); //in module
	DIFF  = point1 - Point1;
        if(isFill) fillHistograms3(DIFF,(Int_t)sec1, option);
	return (DIFF.getX()*DIFF.getX()/6. + DIFF.getY()*DIFF.getY());
      }
    else if(missing == 2)
      {
	//missing top gsi
	 point3 = trans[(Int_t)sec2].transFrom(point3); // in lab
	 HGeomVector point1Lab = transDubna[(Int_t)sec1].transFrom(point1); // in lab
         HGeomVector point4Lab = transDubna[(Int_t)sec2].transFrom(point4); // in lab
	 Point1 = fAlignGeom ->  CalcIntersection(point4Lab,point3,transDubna[(Int_t)sec1]); //in lab 
	 if(!isFill)
	   {   
	     if(fAlignGeom ->  CalcDistanceToLine(point4Lab,point3,point1Lab) > accRange3 ) return 0;
	   }	
        Point1 = transDubna[(Int_t)sec1].transTo(Point1); //in module
        DIFF  = point1 - Point1;
        if(isFill) fillHistograms3(DIFF,(Int_t)sec1, option);
        return (DIFF.getX()*DIFF.getX()/6. + DIFF.getY()*DIFF.getY());
      }
    else if(missing ==3)
      {
	//missing bottom gsi
        point2 = trans[(Int_t)sec1].transFrom(point2); // in lab
	HGeomVector point1Lab = transDubna[(Int_t)sec1].transFrom(point1); // in lab
	HGeomVector point4Lab = transDubna[(Int_t)sec2].transFrom(point4); // in lab
	Point4 = fAlignGeom ->  CalcIntersection(point1Lab,point2,transDubna[(Int_t)sec2]); //in lab
        if(!isFill)
	  {   
	     if(fAlignGeom ->  CalcDistanceToLine(point1Lab,point2,point4Lab) > accRange3 ) return 0;
	  }	     
        
	Point4 = transDubna[(Int_t)sec2].transTo(Point4); //in module    
	DIFF  = point4 - Point4;
        if(isFill) fillHistograms3(DIFF,(Int_t)sec1, option);
	return (DIFF.getX()*DIFF.getX()/6. + DIFF.getY()*DIFF.getY());
  }
    else 
      { 
        cout<<"missing === "<<missing<<endl;
	return 0;
      }
  
}


void HAlignmentGCosmics::changename(TH1F *histo, TString option)
{
  TString name(histo->GetName());
  name.Append(option.Data());
  histo -> SetName(name.Data());
}

void HAlignmentGCosmics::Yoxlama()
{
  for(Int_t i=0; i<6; i++)
    {
      cout<<"gsi bir basha"<<endl;
      transGSIBefore[i].print();
      cout<<"gsi chevirmeden sonra "<<endl;
      HGeomTransform  transMod = refTrans[i];
      transMod.transFrom(transGSIBefore[0]);
      transMod.print();
    }
}

void HAlignmentGCosmics::fillHistograms(HGeomVector &diff1, HGeomVector &diff2,Int_t sec1, TString option)
{
  if(sec1 == 0)
    {
      if(option == "After")
	{
	  histoX0After -> Fill(diff1.getX());
          histoX0After -> Fill(diff2.getX());
	  histoY0After -> Fill(diff1.getY());
	  histoY0After -> Fill(diff2.getY());
	}
      else
	{
	  histoX0 -> Fill(diff1.getX());
          histoX0 -> Fill(diff2.getX());
	  histoY0 -> Fill(diff1.getY());
	  histoY0 -> Fill(diff2.getY());
	}
    }
  else  
    if(sec1 == 1)
      {
      if(option == "After")
	{
	  histoX1After -> Fill(diff1.getX());
          histoX1After -> Fill(diff2.getX());
	  histoY1After -> Fill(diff1.getY());
	  histoY1After -> Fill(diff2.getY());
	}
      else
	{
	  histoX1 -> Fill(diff1.getX());
          histoX1 -> Fill(diff2.getX());
	  histoY1 -> Fill(diff1.getY());
	  histoY1 -> Fill(diff2.getY());
	  
	  //histoX0VsX -> Fill();
	  
	}
      }
    else
      if(sec1 != 2) {cout<<"this can not be"<<endl;}
      else
        {
	  if(option == "After")
	    {
	      histoX2After -> Fill(diff1.getX());
	      histoX2After -> Fill(diff2.getX());
	      histoY2After -> Fill(diff1.getY());
	      histoY2After -> Fill(diff2.getY());
	    }
	  else
	    {
	      histoX2 -> Fill(diff1.getX());
	      histoX2 -> Fill(diff2.getX());
	      histoY2 -> Fill(diff1.getY());
	      histoY2 -> Fill(diff2.getY());
	    }
	}
  
} 

void HAlignmentGCosmics::fillHistograms3(HGeomVector &diff, Int_t sec1, TString option)
{
  if(sec1 == 0)
    {
      if(option == "After")
	{
	  histoX0After3 -> Fill(diff.getX());
          histoY0After3 -> Fill(diff.getY());
	}
      else
	{
	  histoX03 -> Fill(diff.getX());
	  histoY03 -> Fill(diff.getY());
	}
    }
  else  
    if(sec1 == 1)
      {
      if(option == "After")
	{
	  histoX1After3 -> Fill(diff.getX());
	  histoY1After3 -> Fill(diff.getY());
	}
      else
	{
	  histoX13 -> Fill(diff.getX());
	  histoY13 -> Fill(diff.getY());
	}
      }
    else
      if(sec1 != 2) {cout<<"this can not be"<<endl;}
      else
        {
	  if(option == "After")
	    {
	      histoX2After3 -> Fill(diff.getX());
	      histoY2After3 -> Fill(diff.getY());
	    }
	  else
	    {
	      histoX23 -> Fill(diff.getX());
	      histoY23 -> Fill(diff.getY());
	    }
	}
} 
 halignmentgcosmics.cc:1
 halignmentgcosmics.cc:2
 halignmentgcosmics.cc:3
 halignmentgcosmics.cc:4
 halignmentgcosmics.cc:5
 halignmentgcosmics.cc:6
 halignmentgcosmics.cc:7
 halignmentgcosmics.cc:8
 halignmentgcosmics.cc:9
 halignmentgcosmics.cc:10
 halignmentgcosmics.cc:11
 halignmentgcosmics.cc:12
 halignmentgcosmics.cc:13
 halignmentgcosmics.cc:14
 halignmentgcosmics.cc:15
 halignmentgcosmics.cc:16
 halignmentgcosmics.cc:17
 halignmentgcosmics.cc:18
 halignmentgcosmics.cc:19
 halignmentgcosmics.cc:20
 halignmentgcosmics.cc:21
 halignmentgcosmics.cc:22
 halignmentgcosmics.cc:23
 halignmentgcosmics.cc:24
 halignmentgcosmics.cc:25
 halignmentgcosmics.cc:26
 halignmentgcosmics.cc:27
 halignmentgcosmics.cc:28
 halignmentgcosmics.cc:29
 halignmentgcosmics.cc:30
 halignmentgcosmics.cc:31
 halignmentgcosmics.cc:32
 halignmentgcosmics.cc:33
 halignmentgcosmics.cc:34
 halignmentgcosmics.cc:35
 halignmentgcosmics.cc:36
 halignmentgcosmics.cc:37
 halignmentgcosmics.cc:38
 halignmentgcosmics.cc:39
 halignmentgcosmics.cc:40
 halignmentgcosmics.cc:41
 halignmentgcosmics.cc:42
 halignmentgcosmics.cc:43
 halignmentgcosmics.cc:44
 halignmentgcosmics.cc:45
 halignmentgcosmics.cc:46
 halignmentgcosmics.cc:47
 halignmentgcosmics.cc:48
 halignmentgcosmics.cc:49
 halignmentgcosmics.cc:50
 halignmentgcosmics.cc:51
 halignmentgcosmics.cc:52
 halignmentgcosmics.cc:53
 halignmentgcosmics.cc:54
 halignmentgcosmics.cc:55
 halignmentgcosmics.cc:56
 halignmentgcosmics.cc:57
 halignmentgcosmics.cc:58
 halignmentgcosmics.cc:59
 halignmentgcosmics.cc:60
 halignmentgcosmics.cc:61
 halignmentgcosmics.cc:62
 halignmentgcosmics.cc:63
 halignmentgcosmics.cc:64
 halignmentgcosmics.cc:65
 halignmentgcosmics.cc:66
 halignmentgcosmics.cc:67
 halignmentgcosmics.cc:68
 halignmentgcosmics.cc:69
 halignmentgcosmics.cc:70
 halignmentgcosmics.cc:71
 halignmentgcosmics.cc:72
 halignmentgcosmics.cc:73
 halignmentgcosmics.cc:74
 halignmentgcosmics.cc:75
 halignmentgcosmics.cc:76
 halignmentgcosmics.cc:77
 halignmentgcosmics.cc:78
 halignmentgcosmics.cc:79
 halignmentgcosmics.cc:80
 halignmentgcosmics.cc:81
 halignmentgcosmics.cc:82
 halignmentgcosmics.cc:83
 halignmentgcosmics.cc:84
 halignmentgcosmics.cc:85
 halignmentgcosmics.cc:86
 halignmentgcosmics.cc:87
 halignmentgcosmics.cc:88
 halignmentgcosmics.cc:89
 halignmentgcosmics.cc:90
 halignmentgcosmics.cc:91
 halignmentgcosmics.cc:92
 halignmentgcosmics.cc:93
 halignmentgcosmics.cc:94
 halignmentgcosmics.cc:95
 halignmentgcosmics.cc:96
 halignmentgcosmics.cc:97
 halignmentgcosmics.cc:98
 halignmentgcosmics.cc:99
 halignmentgcosmics.cc:100
 halignmentgcosmics.cc:101
 halignmentgcosmics.cc:102
 halignmentgcosmics.cc:103
 halignmentgcosmics.cc:104
 halignmentgcosmics.cc:105
 halignmentgcosmics.cc:106
 halignmentgcosmics.cc:107
 halignmentgcosmics.cc:108
 halignmentgcosmics.cc:109
 halignmentgcosmics.cc:110
 halignmentgcosmics.cc:111
 halignmentgcosmics.cc:112
 halignmentgcosmics.cc:113
 halignmentgcosmics.cc:114
 halignmentgcosmics.cc:115
 halignmentgcosmics.cc:116
 halignmentgcosmics.cc:117
 halignmentgcosmics.cc:118
 halignmentgcosmics.cc:119
 halignmentgcosmics.cc:120
 halignmentgcosmics.cc:121
 halignmentgcosmics.cc:122
 halignmentgcosmics.cc:123
 halignmentgcosmics.cc:124
 halignmentgcosmics.cc:125
 halignmentgcosmics.cc:126
 halignmentgcosmics.cc:127
 halignmentgcosmics.cc:128
 halignmentgcosmics.cc:129
 halignmentgcosmics.cc:130
 halignmentgcosmics.cc:131
 halignmentgcosmics.cc:132
 halignmentgcosmics.cc:133
 halignmentgcosmics.cc:134
 halignmentgcosmics.cc:135
 halignmentgcosmics.cc:136
 halignmentgcosmics.cc:137
 halignmentgcosmics.cc:138
 halignmentgcosmics.cc:139
 halignmentgcosmics.cc:140
 halignmentgcosmics.cc:141
 halignmentgcosmics.cc:142
 halignmentgcosmics.cc:143
 halignmentgcosmics.cc:144
 halignmentgcosmics.cc:145
 halignmentgcosmics.cc:146
 halignmentgcosmics.cc:147
 halignmentgcosmics.cc:148
 halignmentgcosmics.cc:149
 halignmentgcosmics.cc:150
 halignmentgcosmics.cc:151
 halignmentgcosmics.cc:152
 halignmentgcosmics.cc:153
 halignmentgcosmics.cc:154
 halignmentgcosmics.cc:155
 halignmentgcosmics.cc:156
 halignmentgcosmics.cc:157
 halignmentgcosmics.cc:158
 halignmentgcosmics.cc:159
 halignmentgcosmics.cc:160
 halignmentgcosmics.cc:161
 halignmentgcosmics.cc:162
 halignmentgcosmics.cc:163
 halignmentgcosmics.cc:164
 halignmentgcosmics.cc:165
 halignmentgcosmics.cc:166
 halignmentgcosmics.cc:167
 halignmentgcosmics.cc:168
 halignmentgcosmics.cc:169
 halignmentgcosmics.cc:170
 halignmentgcosmics.cc:171
 halignmentgcosmics.cc:172
 halignmentgcosmics.cc:173
 halignmentgcosmics.cc:174
 halignmentgcosmics.cc:175
 halignmentgcosmics.cc:176
 halignmentgcosmics.cc:177
 halignmentgcosmics.cc:178
 halignmentgcosmics.cc:179
 halignmentgcosmics.cc:180
 halignmentgcosmics.cc:181
 halignmentgcosmics.cc:182
 halignmentgcosmics.cc:183
 halignmentgcosmics.cc:184
 halignmentgcosmics.cc:185
 halignmentgcosmics.cc:186
 halignmentgcosmics.cc:187
 halignmentgcosmics.cc:188
 halignmentgcosmics.cc:189
 halignmentgcosmics.cc:190
 halignmentgcosmics.cc:191
 halignmentgcosmics.cc:192
 halignmentgcosmics.cc:193
 halignmentgcosmics.cc:194
 halignmentgcosmics.cc:195
 halignmentgcosmics.cc:196
 halignmentgcosmics.cc:197
 halignmentgcosmics.cc:198
 halignmentgcosmics.cc:199
 halignmentgcosmics.cc:200
 halignmentgcosmics.cc:201
 halignmentgcosmics.cc:202
 halignmentgcosmics.cc:203
 halignmentgcosmics.cc:204
 halignmentgcosmics.cc:205
 halignmentgcosmics.cc:206
 halignmentgcosmics.cc:207
 halignmentgcosmics.cc:208
 halignmentgcosmics.cc:209
 halignmentgcosmics.cc:210
 halignmentgcosmics.cc:211
 halignmentgcosmics.cc:212
 halignmentgcosmics.cc:213
 halignmentgcosmics.cc:214
 halignmentgcosmics.cc:215
 halignmentgcosmics.cc:216
 halignmentgcosmics.cc:217
 halignmentgcosmics.cc:218
 halignmentgcosmics.cc:219
 halignmentgcosmics.cc:220
 halignmentgcosmics.cc:221
 halignmentgcosmics.cc:222
 halignmentgcosmics.cc:223
 halignmentgcosmics.cc:224
 halignmentgcosmics.cc:225
 halignmentgcosmics.cc:226
 halignmentgcosmics.cc:227
 halignmentgcosmics.cc:228
 halignmentgcosmics.cc:229
 halignmentgcosmics.cc:230
 halignmentgcosmics.cc:231
 halignmentgcosmics.cc:232
 halignmentgcosmics.cc:233
 halignmentgcosmics.cc:234
 halignmentgcosmics.cc:235
 halignmentgcosmics.cc:236
 halignmentgcosmics.cc:237
 halignmentgcosmics.cc:238
 halignmentgcosmics.cc:239
 halignmentgcosmics.cc:240
 halignmentgcosmics.cc:241
 halignmentgcosmics.cc:242
 halignmentgcosmics.cc:243
 halignmentgcosmics.cc:244
 halignmentgcosmics.cc:245
 halignmentgcosmics.cc:246
 halignmentgcosmics.cc:247
 halignmentgcosmics.cc:248
 halignmentgcosmics.cc:249
 halignmentgcosmics.cc:250
 halignmentgcosmics.cc:251
 halignmentgcosmics.cc:252
 halignmentgcosmics.cc:253
 halignmentgcosmics.cc:254
 halignmentgcosmics.cc:255
 halignmentgcosmics.cc:256
 halignmentgcosmics.cc:257
 halignmentgcosmics.cc:258
 halignmentgcosmics.cc:259
 halignmentgcosmics.cc:260
 halignmentgcosmics.cc:261
 halignmentgcosmics.cc:262
 halignmentgcosmics.cc:263
 halignmentgcosmics.cc:264
 halignmentgcosmics.cc:265
 halignmentgcosmics.cc:266
 halignmentgcosmics.cc:267
 halignmentgcosmics.cc:268
 halignmentgcosmics.cc:269
 halignmentgcosmics.cc:270
 halignmentgcosmics.cc:271
 halignmentgcosmics.cc:272
 halignmentgcosmics.cc:273
 halignmentgcosmics.cc:274
 halignmentgcosmics.cc:275
 halignmentgcosmics.cc:276
 halignmentgcosmics.cc:277
 halignmentgcosmics.cc:278
 halignmentgcosmics.cc:279
 halignmentgcosmics.cc:280
 halignmentgcosmics.cc:281
 halignmentgcosmics.cc:282
 halignmentgcosmics.cc:283
 halignmentgcosmics.cc:284
 halignmentgcosmics.cc:285
 halignmentgcosmics.cc:286
 halignmentgcosmics.cc:287
 halignmentgcosmics.cc:288
 halignmentgcosmics.cc:289
 halignmentgcosmics.cc:290
 halignmentgcosmics.cc:291
 halignmentgcosmics.cc:292
 halignmentgcosmics.cc:293
 halignmentgcosmics.cc:294
 halignmentgcosmics.cc:295
 halignmentgcosmics.cc:296
 halignmentgcosmics.cc:297
 halignmentgcosmics.cc:298
 halignmentgcosmics.cc:299
 halignmentgcosmics.cc:300
 halignmentgcosmics.cc:301
 halignmentgcosmics.cc:302
 halignmentgcosmics.cc:303
 halignmentgcosmics.cc:304
 halignmentgcosmics.cc:305
 halignmentgcosmics.cc:306
 halignmentgcosmics.cc:307
 halignmentgcosmics.cc:308
 halignmentgcosmics.cc:309
 halignmentgcosmics.cc:310
 halignmentgcosmics.cc:311
 halignmentgcosmics.cc:312
 halignmentgcosmics.cc:313
 halignmentgcosmics.cc:314
 halignmentgcosmics.cc:315
 halignmentgcosmics.cc:316
 halignmentgcosmics.cc:317
 halignmentgcosmics.cc:318
 halignmentgcosmics.cc:319
 halignmentgcosmics.cc:320
 halignmentgcosmics.cc:321
 halignmentgcosmics.cc:322
 halignmentgcosmics.cc:323
 halignmentgcosmics.cc:324
 halignmentgcosmics.cc:325
 halignmentgcosmics.cc:326
 halignmentgcosmics.cc:327
 halignmentgcosmics.cc:328
 halignmentgcosmics.cc:329
 halignmentgcosmics.cc:330
 halignmentgcosmics.cc:331
 halignmentgcosmics.cc:332
 halignmentgcosmics.cc:333
 halignmentgcosmics.cc:334
 halignmentgcosmics.cc:335
 halignmentgcosmics.cc:336
 halignmentgcosmics.cc:337
 halignmentgcosmics.cc:338
 halignmentgcosmics.cc:339
 halignmentgcosmics.cc:340
 halignmentgcosmics.cc:341
 halignmentgcosmics.cc:342
 halignmentgcosmics.cc:343
 halignmentgcosmics.cc:344
 halignmentgcosmics.cc:345
 halignmentgcosmics.cc:346
 halignmentgcosmics.cc:347
 halignmentgcosmics.cc:348
 halignmentgcosmics.cc:349
 halignmentgcosmics.cc:350
 halignmentgcosmics.cc:351
 halignmentgcosmics.cc:352
 halignmentgcosmics.cc:353
 halignmentgcosmics.cc:354
 halignmentgcosmics.cc:355
 halignmentgcosmics.cc:356
 halignmentgcosmics.cc:357
 halignmentgcosmics.cc:358
 halignmentgcosmics.cc:359
 halignmentgcosmics.cc:360
 halignmentgcosmics.cc:361
 halignmentgcosmics.cc:362
 halignmentgcosmics.cc:363
 halignmentgcosmics.cc:364
 halignmentgcosmics.cc:365
 halignmentgcosmics.cc:366
 halignmentgcosmics.cc:367
 halignmentgcosmics.cc:368
 halignmentgcosmics.cc:369
 halignmentgcosmics.cc:370
 halignmentgcosmics.cc:371
 halignmentgcosmics.cc:372
 halignmentgcosmics.cc:373
 halignmentgcosmics.cc:374
 halignmentgcosmics.cc:375
 halignmentgcosmics.cc:376
 halignmentgcosmics.cc:377
 halignmentgcosmics.cc:378
 halignmentgcosmics.cc:379
 halignmentgcosmics.cc:380
 halignmentgcosmics.cc:381
 halignmentgcosmics.cc:382
 halignmentgcosmics.cc:383
 halignmentgcosmics.cc:384
 halignmentgcosmics.cc:385
 halignmentgcosmics.cc:386
 halignmentgcosmics.cc:387
 halignmentgcosmics.cc:388
 halignmentgcosmics.cc:389
 halignmentgcosmics.cc:390
 halignmentgcosmics.cc:391
 halignmentgcosmics.cc:392
 halignmentgcosmics.cc:393
 halignmentgcosmics.cc:394
 halignmentgcosmics.cc:395
 halignmentgcosmics.cc:396
 halignmentgcosmics.cc:397
 halignmentgcosmics.cc:398
 halignmentgcosmics.cc:399
 halignmentgcosmics.cc:400
 halignmentgcosmics.cc:401
 halignmentgcosmics.cc:402
 halignmentgcosmics.cc:403
 halignmentgcosmics.cc:404
 halignmentgcosmics.cc:405
 halignmentgcosmics.cc:406
 halignmentgcosmics.cc:407
 halignmentgcosmics.cc:408
 halignmentgcosmics.cc:409
 halignmentgcosmics.cc:410
 halignmentgcosmics.cc:411
 halignmentgcosmics.cc:412
 halignmentgcosmics.cc:413
 halignmentgcosmics.cc:414
 halignmentgcosmics.cc:415
 halignmentgcosmics.cc:416
 halignmentgcosmics.cc:417
 halignmentgcosmics.cc:418
 halignmentgcosmics.cc:419
 halignmentgcosmics.cc:420
 halignmentgcosmics.cc:421
 halignmentgcosmics.cc:422
 halignmentgcosmics.cc:423
 halignmentgcosmics.cc:424
 halignmentgcosmics.cc:425
 halignmentgcosmics.cc:426
 halignmentgcosmics.cc:427
 halignmentgcosmics.cc:428
 halignmentgcosmics.cc:429
 halignmentgcosmics.cc:430
 halignmentgcosmics.cc:431
 halignmentgcosmics.cc:432
 halignmentgcosmics.cc:433
 halignmentgcosmics.cc:434
 halignmentgcosmics.cc:435
 halignmentgcosmics.cc:436
 halignmentgcosmics.cc:437
 halignmentgcosmics.cc:438
 halignmentgcosmics.cc:439
 halignmentgcosmics.cc:440
 halignmentgcosmics.cc:441
 halignmentgcosmics.cc:442
 halignmentgcosmics.cc:443
 halignmentgcosmics.cc:444
 halignmentgcosmics.cc:445
 halignmentgcosmics.cc:446
 halignmentgcosmics.cc:447
 halignmentgcosmics.cc:448
 halignmentgcosmics.cc:449
 halignmentgcosmics.cc:450
 halignmentgcosmics.cc:451
 halignmentgcosmics.cc:452
 halignmentgcosmics.cc:453
 halignmentgcosmics.cc:454
 halignmentgcosmics.cc:455
 halignmentgcosmics.cc:456
 halignmentgcosmics.cc:457
 halignmentgcosmics.cc:458
 halignmentgcosmics.cc:459
 halignmentgcosmics.cc:460
 halignmentgcosmics.cc:461
 halignmentgcosmics.cc:462
 halignmentgcosmics.cc:463
 halignmentgcosmics.cc:464
 halignmentgcosmics.cc:465
 halignmentgcosmics.cc:466
 halignmentgcosmics.cc:467
 halignmentgcosmics.cc:468
 halignmentgcosmics.cc:469
 halignmentgcosmics.cc:470
 halignmentgcosmics.cc:471
 halignmentgcosmics.cc:472
 halignmentgcosmics.cc:473
 halignmentgcosmics.cc:474
 halignmentgcosmics.cc:475
 halignmentgcosmics.cc:476
 halignmentgcosmics.cc:477
 halignmentgcosmics.cc:478
 halignmentgcosmics.cc:479
 halignmentgcosmics.cc:480
 halignmentgcosmics.cc:481
 halignmentgcosmics.cc:482
 halignmentgcosmics.cc:483
 halignmentgcosmics.cc:484
 halignmentgcosmics.cc:485
 halignmentgcosmics.cc:486
 halignmentgcosmics.cc:487
 halignmentgcosmics.cc:488
 halignmentgcosmics.cc:489
 halignmentgcosmics.cc:490
 halignmentgcosmics.cc:491
 halignmentgcosmics.cc:492
 halignmentgcosmics.cc:493
 halignmentgcosmics.cc:494
 halignmentgcosmics.cc:495
 halignmentgcosmics.cc:496
 halignmentgcosmics.cc:497
 halignmentgcosmics.cc:498
 halignmentgcosmics.cc:499
 halignmentgcosmics.cc:500
 halignmentgcosmics.cc:501
 halignmentgcosmics.cc:502
 halignmentgcosmics.cc:503
 halignmentgcosmics.cc:504
 halignmentgcosmics.cc:505
 halignmentgcosmics.cc:506
 halignmentgcosmics.cc:507
 halignmentgcosmics.cc:508
 halignmentgcosmics.cc:509
 halignmentgcosmics.cc:510
 halignmentgcosmics.cc:511
 halignmentgcosmics.cc:512
 halignmentgcosmics.cc:513
 halignmentgcosmics.cc:514
 halignmentgcosmics.cc:515
 halignmentgcosmics.cc:516
 halignmentgcosmics.cc:517
 halignmentgcosmics.cc:518
 halignmentgcosmics.cc:519
 halignmentgcosmics.cc:520
 halignmentgcosmics.cc:521
 halignmentgcosmics.cc:522
 halignmentgcosmics.cc:523
 halignmentgcosmics.cc:524
 halignmentgcosmics.cc:525
 halignmentgcosmics.cc:526
 halignmentgcosmics.cc:527
 halignmentgcosmics.cc:528
 halignmentgcosmics.cc:529
 halignmentgcosmics.cc:530
 halignmentgcosmics.cc:531
 halignmentgcosmics.cc:532
 halignmentgcosmics.cc:533
 halignmentgcosmics.cc:534
 halignmentgcosmics.cc:535
 halignmentgcosmics.cc:536
 halignmentgcosmics.cc:537
 halignmentgcosmics.cc:538
 halignmentgcosmics.cc:539
 halignmentgcosmics.cc:540
 halignmentgcosmics.cc:541
 halignmentgcosmics.cc:542
 halignmentgcosmics.cc:543
 halignmentgcosmics.cc:544
 halignmentgcosmics.cc:545
 halignmentgcosmics.cc:546
 halignmentgcosmics.cc:547
 halignmentgcosmics.cc:548
 halignmentgcosmics.cc:549
 halignmentgcosmics.cc:550
 halignmentgcosmics.cc:551
 halignmentgcosmics.cc:552
 halignmentgcosmics.cc:553
 halignmentgcosmics.cc:554
 halignmentgcosmics.cc:555
 halignmentgcosmics.cc:556
 halignmentgcosmics.cc:557
 halignmentgcosmics.cc:558
 halignmentgcosmics.cc:559
 halignmentgcosmics.cc:560
 halignmentgcosmics.cc:561
 halignmentgcosmics.cc:562
 halignmentgcosmics.cc:563
 halignmentgcosmics.cc:564
 halignmentgcosmics.cc:565
 halignmentgcosmics.cc:566
 halignmentgcosmics.cc:567
 halignmentgcosmics.cc:568
 halignmentgcosmics.cc:569
 halignmentgcosmics.cc:570
 halignmentgcosmics.cc:571
 halignmentgcosmics.cc:572
 halignmentgcosmics.cc:573
 halignmentgcosmics.cc:574
 halignmentgcosmics.cc:575
 halignmentgcosmics.cc:576
 halignmentgcosmics.cc:577
 halignmentgcosmics.cc:578
 halignmentgcosmics.cc:579
 halignmentgcosmics.cc:580
 halignmentgcosmics.cc:581
 halignmentgcosmics.cc:582
 halignmentgcosmics.cc:583
 halignmentgcosmics.cc:584
 halignmentgcosmics.cc:585
 halignmentgcosmics.cc:586
 halignmentgcosmics.cc:587
 halignmentgcosmics.cc:588
 halignmentgcosmics.cc:589
 halignmentgcosmics.cc:590
 halignmentgcosmics.cc:591
 halignmentgcosmics.cc:592
 halignmentgcosmics.cc:593
 halignmentgcosmics.cc:594
 halignmentgcosmics.cc:595
 halignmentgcosmics.cc:596
 halignmentgcosmics.cc:597
 halignmentgcosmics.cc:598
 halignmentgcosmics.cc:599
 halignmentgcosmics.cc:600
 halignmentgcosmics.cc:601
 halignmentgcosmics.cc:602
 halignmentgcosmics.cc:603
 halignmentgcosmics.cc:604
 halignmentgcosmics.cc:605
 halignmentgcosmics.cc:606
 halignmentgcosmics.cc:607
 halignmentgcosmics.cc:608
 halignmentgcosmics.cc:609
 halignmentgcosmics.cc:610
 halignmentgcosmics.cc:611
 halignmentgcosmics.cc:612
 halignmentgcosmics.cc:613
 halignmentgcosmics.cc:614
 halignmentgcosmics.cc:615
 halignmentgcosmics.cc:616
 halignmentgcosmics.cc:617
 halignmentgcosmics.cc:618
 halignmentgcosmics.cc:619
 halignmentgcosmics.cc:620
 halignmentgcosmics.cc:621
 halignmentgcosmics.cc:622
 halignmentgcosmics.cc:623
 halignmentgcosmics.cc:624
 halignmentgcosmics.cc:625
 halignmentgcosmics.cc:626
 halignmentgcosmics.cc:627
 halignmentgcosmics.cc:628
 halignmentgcosmics.cc:629
 halignmentgcosmics.cc:630
 halignmentgcosmics.cc:631
 halignmentgcosmics.cc:632
 halignmentgcosmics.cc:633
 halignmentgcosmics.cc:634
 halignmentgcosmics.cc:635
 halignmentgcosmics.cc:636
 halignmentgcosmics.cc:637
 halignmentgcosmics.cc:638
 halignmentgcosmics.cc:639
 halignmentgcosmics.cc:640
 halignmentgcosmics.cc:641
 halignmentgcosmics.cc:642
 halignmentgcosmics.cc:643
 halignmentgcosmics.cc:644
 halignmentgcosmics.cc:645
 halignmentgcosmics.cc:646
 halignmentgcosmics.cc:647
 halignmentgcosmics.cc:648
 halignmentgcosmics.cc:649
 halignmentgcosmics.cc:650
 halignmentgcosmics.cc:651
 halignmentgcosmics.cc:652
 halignmentgcosmics.cc:653
 halignmentgcosmics.cc:654
 halignmentgcosmics.cc:655
 halignmentgcosmics.cc:656
 halignmentgcosmics.cc:657
 halignmentgcosmics.cc:658
 halignmentgcosmics.cc:659
 halignmentgcosmics.cc:660
 halignmentgcosmics.cc:661
 halignmentgcosmics.cc:662
 halignmentgcosmics.cc:663
 halignmentgcosmics.cc:664
 halignmentgcosmics.cc:665
 halignmentgcosmics.cc:666
 halignmentgcosmics.cc:667
 halignmentgcosmics.cc:668
 halignmentgcosmics.cc:669
 halignmentgcosmics.cc:670
 halignmentgcosmics.cc:671
 halignmentgcosmics.cc:672
 halignmentgcosmics.cc:673
 halignmentgcosmics.cc:674
 halignmentgcosmics.cc:675
 halignmentgcosmics.cc:676
 halignmentgcosmics.cc:677
 halignmentgcosmics.cc:678
 halignmentgcosmics.cc:679
 halignmentgcosmics.cc:680
 halignmentgcosmics.cc:681
 halignmentgcosmics.cc:682
 halignmentgcosmics.cc:683
 halignmentgcosmics.cc:684
 halignmentgcosmics.cc:685
 halignmentgcosmics.cc:686
 halignmentgcosmics.cc:687
 halignmentgcosmics.cc:688
 halignmentgcosmics.cc:689
 halignmentgcosmics.cc:690
 halignmentgcosmics.cc:691
 halignmentgcosmics.cc:692
 halignmentgcosmics.cc:693
 halignmentgcosmics.cc:694
 halignmentgcosmics.cc:695
 halignmentgcosmics.cc:696
 halignmentgcosmics.cc:697
 halignmentgcosmics.cc:698
 halignmentgcosmics.cc:699
 halignmentgcosmics.cc:700
 halignmentgcosmics.cc:701
 halignmentgcosmics.cc:702
 halignmentgcosmics.cc:703
 halignmentgcosmics.cc:704
 halignmentgcosmics.cc:705
 halignmentgcosmics.cc:706
 halignmentgcosmics.cc:707
 halignmentgcosmics.cc:708
 halignmentgcosmics.cc:709
 halignmentgcosmics.cc:710
 halignmentgcosmics.cc:711
 halignmentgcosmics.cc:712
 halignmentgcosmics.cc:713
 halignmentgcosmics.cc:714
 halignmentgcosmics.cc:715
 halignmentgcosmics.cc:716
 halignmentgcosmics.cc:717
 halignmentgcosmics.cc:718
 halignmentgcosmics.cc:719
 halignmentgcosmics.cc:720
 halignmentgcosmics.cc:721
 halignmentgcosmics.cc:722
 halignmentgcosmics.cc:723
 halignmentgcosmics.cc:724
 halignmentgcosmics.cc:725
 halignmentgcosmics.cc:726
 halignmentgcosmics.cc:727
 halignmentgcosmics.cc:728
 halignmentgcosmics.cc:729
 halignmentgcosmics.cc:730
 halignmentgcosmics.cc:731
 halignmentgcosmics.cc:732
 halignmentgcosmics.cc:733
 halignmentgcosmics.cc:734
 halignmentgcosmics.cc:735
 halignmentgcosmics.cc:736
 halignmentgcosmics.cc:737
 halignmentgcosmics.cc:738
 halignmentgcosmics.cc:739
 halignmentgcosmics.cc:740
 halignmentgcosmics.cc:741
 halignmentgcosmics.cc:742
 halignmentgcosmics.cc:743
 halignmentgcosmics.cc:744
 halignmentgcosmics.cc:745
 halignmentgcosmics.cc:746
 halignmentgcosmics.cc:747
 halignmentgcosmics.cc:748
 halignmentgcosmics.cc:749
 halignmentgcosmics.cc:750
 halignmentgcosmics.cc:751
 halignmentgcosmics.cc:752
 halignmentgcosmics.cc:753
 halignmentgcosmics.cc:754
 halignmentgcosmics.cc:755
 halignmentgcosmics.cc:756
 halignmentgcosmics.cc:757
 halignmentgcosmics.cc:758
 halignmentgcosmics.cc:759
 halignmentgcosmics.cc:760
 halignmentgcosmics.cc:761
 halignmentgcosmics.cc:762
 halignmentgcosmics.cc:763
 halignmentgcosmics.cc:764
 halignmentgcosmics.cc:765
 halignmentgcosmics.cc:766
 halignmentgcosmics.cc:767
 halignmentgcosmics.cc:768
 halignmentgcosmics.cc:769
 halignmentgcosmics.cc:770
 halignmentgcosmics.cc:771
 halignmentgcosmics.cc:772
 halignmentgcosmics.cc:773
 halignmentgcosmics.cc:774
 halignmentgcosmics.cc:775
 halignmentgcosmics.cc:776
 halignmentgcosmics.cc:777
 halignmentgcosmics.cc:778
 halignmentgcosmics.cc:779
 halignmentgcosmics.cc:780
 halignmentgcosmics.cc:781