Esempio n. 1
0
//-------------------------------------------------------------------
void Alignment_2(int cluster_length_leftCut = 2,int cluster_length_rightCut = 7,float TotSignal_Cut = 5,bool mask=false){
  gStyle->SetOptStat(11111111);
  gStyle->SetOptFit(111111111);
  //gAnaCombine->LinkBranches();
  ofstream outputlog("./AMS/AMSAlignment_2.txt",ios::out | ios::app);
  outputlog<<"\nfile: "<<gRootIOSvc->GetInputFileName()<<".\tCluster length: "<<cluster_length_leftCut<<"~"<<cluster_length_rightCut<<".\tTotal signale cut "<<TotSignal_Cut<<endl;

  TH2D *h_ladder[4][2]; // refer to ladder 0
  char name[80];
  for(short lid =0;lid<4;++lid){
    for(short sid=0;sid<2;++sid){
      snprintf(name,80,"ladder_%d-side_%d",lid+1,sid);
      h_ladder[lid][sid] = new TH2D(name,name,400,0+sid*600,800+sid*200,400,0+sid*600,800+sid*200);
      snprintf(name,80,"ladder_0-side_%d / strip id",sid);
      h_ladder[lid][sid]->GetXaxis()->SetTitle(name);
      snprintf(name,80,"ladder_%d-side_%d / strip id",lid+1,sid);
      h_ladder[lid][sid]->GetYaxis()->SetTitle(name);
    }
  }

  TChain *tree = gAnaCombine->GetTree();
  long nEvt = tree->GetEntries();
  for(long ievt=0;ievt<nEvt;++ievt){
    tree->GetEntry(ievt);
    short nCluster = gAnaCombine->fEvtAMS->GetEntriesFast();
    float Ref[2]={0.,0.}, RefSN[2]={0.,0.};
    for(int iclu=0;iclu<nCluster;++iclu){
      Cluster *acluster = (Cluster*)gAnaCombine->fEvtAMS->At(iclu);
      if(acluster->ladder != 0){
        continue;
      }
      short length = acluster->length;
      int side = acluster->side;
      //if(cluster_length_leftCut<=length && length<=cluster_length_rightCut && acluster->GetTotSig()>TotSignal_Cut && acluster->GetTotSig()>TotSignal_Cut && acluster->GetTotSN()>RefSN[side]){
      if(acluster->GetTotSN()>RefSN[side]){
        Ref[side] = acluster->GetSeedAdd();
        RefSN[side] = acluster->GetTotSN();
      }
    }
    /*
    if(Ref[0] == 0 || Ref[1] == 0){
      std::cout<<"DEBUG: "<<__FILE__<<"("<<__LINE__<<") event "<<ievt<<" s = "<<Ref[0]<<" k = "<<Ref[1]<<std::endl;
    }
    */

    for(int iclu=0;iclu<nCluster;++iclu){
      Cluster *acluster = (Cluster*)gAnaCombine->fEvtAMS->At(iclu);
      int ladder = acluster->ladder;
      if(ladder==5){
        ladder = 2;
      }else if(ladder == 4){
        ladder = 3;
      }else if(ladder == 3){
        ladder = 4;
      }
      if(ladder != 0){
        short length = acluster->length;
        if((cluster_length_leftCut<=length && length<=cluster_length_rightCut && acluster->GetTotSig()>TotSignal_Cut && acluster->GetTotSig()>TotSignal_Cut)){
          int side = acluster->side;
          if(side == 0){
            h_ladder[ladder-1][side]->Fill(Ref[side],acluster->GetSeedAdd(),acluster->GetSeedSN());
          }else{
            h_ladder[ladder-1][side]->Fill(Ref[side],acluster->GetSeedAdd(),acluster->GetSeedSN());
          }
        }
      }
    }
  }

  TCanvas *c1[4];
  for(short ild = 0;ild<4;++ild){
    snprintf(name,80,"AMS ladder_%d Alignment_2: cluster length %d~%d, total signal cut %f",ild+1,cluster_length_leftCut,cluster_length_rightCut,TotSignal_Cut);
    c1[ild]= new TCanvas(name,name);
    c1[ild]->Divide(2,2);
    c1[ild]->cd(1);
    h_ladder[ild][0]->Draw("colz");
    c1[ild]->cd(2);
    h_ladder[ild][1]->Draw("colz");
    c1[ild]->cd(3);
    h_ladder[ild][0]->ProfileX()->Draw();
    c1[ild]->cd(4);
    h_ladder[ild][1]->ProfileX()->Draw();
  }

}
Esempio n. 2
0
//-------------------------------------------------------------------
void Alignment_0(int cluster_length_leftCut = 2,int cluster_length_rightCut = 7,float TotSignal_Cut = 5){
  gStyle->SetOptStat(11111111);
  gStyle->SetOptFit(111111111);
  //gAnaCombine->LinkBranches();

  TH1D *h_ladder_stripID[5][2];
  TH1D *h_Refer[5][2];
  char name[80];
  for(short lid =0;lid<5;++lid){
    for(short sid=0;sid<2;++sid){
      snprintf(name,80,"ladder_%d-side_%d",lid,sid);
      h_ladder_stripID[lid][sid] = new TH1D(name,name,500,0,1100);
      snprintf(name,80,"ladder_%d-side_%d VS ladder 0",lid,sid);
      h_Refer[lid][sid] = new TH1D(name,name,200,-200,200);
    }
    snprintf(name,80,"ladder_%d",lid);
    h_ladder_stripID[lid][0]->SetTitle(name);
    snprintf(name,80,"Seed Address ladder_%d",lid);
    h_Refer[lid][0]->SetTitle(name);
  }

  TChain *tree = gAnaCombine->GetTree();
  long nEvt = tree->GetEntries();
  for(long ievt=0;ievt<nEvt;++ievt){
    tree->GetEntry(ievt);
    short nCluster = gAnaCombine->fEvtAMS->GetEntriesFast();
    float Ref[2]={0.,0.}, RefSN[2]={0.,0.};
    for(int iclu=0;iclu<nCluster;++iclu){
      Cluster *acluster = (Cluster*)gAnaCombine->fEvtAMS->At(iclu);
      if(acluster->ladder !=0){
        continue;
      }
      short length = acluster->length;
      int side = acluster->side;
      if(acluster->GetTotSN()>RefSN[side] && cluster_length_leftCut<=length && length<=cluster_length_rightCut && acluster->GetTotSig()>TotSignal_Cut){
        Ref[side] = acluster->GetSeedAdd();
        RefSN[side] = acluster->GetTotSN();
      }
    }
    for(int iclu=0;iclu<nCluster;++iclu){
      Cluster *acluster = (Cluster*)gAnaCombine->fEvtAMS->At(iclu);
      short length = acluster->length;
      if(length < cluster_length_leftCut || length>cluster_length_rightCut || acluster->GetTotSig()<TotSignal_Cut || acluster->GetTotSig()<TotSignal_Cut){
        continue;
      }
      int ladder = acluster->ladder;
      if(ladder==5){
        ladder = 2;
      }else if(ladder == 4){
        ladder = 3;
      }else if(ladder == 3){
        ladder = 4;
      }
      int side = acluster->side;
      h_ladder_stripID[ladder][side]->Fill(acluster->GetSeedAdd());
      h_Refer[ladder][side]->Fill(acluster->GetSeedAdd()-Ref[side]);
    }
  }
  snprintf(name,80,"AMS Alignment_0_a: cluster length %d~%d, total signal cut %f",cluster_length_leftCut,cluster_length_rightCut,TotSignal_Cut);
  TCanvas *c1 = new TCanvas(name,name);
  c1->Divide(2,3);
  snprintf(name,80,"AMS Alignment_0_b: cluster length %d~%d, total signal cut %f",cluster_length_leftCut,cluster_length_rightCut,TotSignal_Cut);
  TCanvas *c2 = new TCanvas(name,name);
  c2->Divide(2,3);
  for(short lid=0;lid<5;++lid){
    c1->cd(lid+1);
    h_ladder_stripID[lid][0]->Draw();
    h_ladder_stripID[lid][1]->SetLineColor(6);
    h_ladder_stripID[lid][1]->Draw("same");
    c2->cd(lid+1);
    h_Refer[lid][0]->Draw();
    h_Refer[lid][1]->SetLineColor(6);
    h_Refer[lid][1]->Draw("same");
  }
}