#include <TArray.h>
#include <TFile.h>
#include <TStopwatch.h>
#include <TArray.h>
#include <TNtuple.h>
#include <TGeoManager.h>
#include "AliGeomManager.h"
#include "AliAlignmentTracks.h"
#include "AliTrackFitter.h"
#include "AliTrackFitterKalman.h"
#include "AliTrackFitterRieman.h"
#include "AliTrackResidualsFast.h"
#include "AliTrackResidualsChi2.h"
#include "AliTrackResidualsLinear.h"
void RealignmentITSIndependVol(TString minimizer="fast",const Int_t fit=0,const Int_t iter1=1,const Int_t iterations=5,const Int_t minNtracks=-10,const Int_t layer=0,const Int_t minTrackPoint=6,TString fileintro="AliTrackPoints.root",TString geometryfile="geometry.root"){
// minimizer="fast"->AliTrackResidualFast minimizer
// "minuit"->AliTrackResidualChi2 minimizer
// "minuitnorot"->AliTrackResidualChi2 minimizer without rotations degrees of freedom
// "linear"->AliTrackResidualLinear minimizer
//fit=0-> Riemann Fitter, fit=1->Kalman
//iter1=#iterations inside AliAlignmentTracks::AliAlignVolumes method
//iterations=#iterations of the entire procedure
//layer=0->all ITS, otherways the usual notation is considered (1=SPD1,2=SPD2,3=SDD1,4=SDD2,5=SSD1,6=SSD2)
//minNtracks=minimun number of tracks passing through a module in order to try to realign the module itsself
// if minNtracks<0, minimun number of tracks is |minNtracks|*minNumPoint[layer]/fact (see the code below): this allows a different
// choice of the number of tracks required on different layers and to vary these numbers once tuned the relative proportions.
//minTrackPoint=minimun number of "good" points required to a track (THE POINT ON THE MODULE THAT IS GOING TO BE REALIGNED
// IS NEVER CONSIDERED->max number can be required is 11 for cosmics tracks) for the track being considered in the minimization
//fileintro=file into which the Tree with the space points is stored
//geometryfile=file containing the geometry
TArrayI volIDs2(2200);
volIDs2.Reset(0);
TArrayI volIDs(1);
TString outname;
Int_t layerNum,modNum,iLayer,iLayerToAlign,j=0,size=0,lastVolid=0;
Int_t minNumPoint[6]={200,200,200,200,100,100};
Double_t fact=10;
TNtuple *ntVolumeAlign=new TNtuple("ntVolumeAlign","NTuple with volume tried to be realigned","layerNum:modNum:volumeIDnum");
AliAlignmentTracks *AliAlTrack=new AliAlignmentTracks();
AliAlTrack->SetPointsFilename(fileintro.Data());
AliTrackFitter *fitter;
if(fit==1)fitter= new AliTrackFitterKalman();
else fitter=new AliTrackFitterRieman();
fitter->SetMinNPoints(minTrackPoint);
AliAlTrack->SetTrackFitter(fitter);
AliTrackResiduals *res;
if(minimizer=="minuit"){
res = new AliTrackResidualsChi2();
}
else if(minimizer=="minuitnorot"){
res = new AliTrackResidualsChi2();
res->FixParameter(3);
res->FixParameter(4);
res->FixParameter(5);
}
else if(minimizer=="fast"){
res = new AliTrackResidualsFast();
}
else if(minimizer=="linear"){
res = new AliTrackResidualsLinear();
}
else {
printf("Trying to set a non existing minimizer! \n");
return;
}
res->SetMinNPoints(1);
AliAlTrack->SetMinimizer(res);
if(!gGeoManager) TGeoManager::Import(geometryfile.Data());
TStopwatch *timer=new TStopwatch();
timer->Start();
AliAlTrack->BuildIndex();
j=0;
UShort_t volid;
for(Int_t iter=0;iter<iterations;iter++){
for(iLayerToAlign=1;iLayerToAlign<=6;iLayerToAlign++){
if(layer!=0&&(Int_t)iLayerToAlign!=layer)continue;
j=0;
size=0;
for(Int_t k=1;k<=6;k++){
size+=(Int_t)AliGeomManager::LayerSize(k);
printf("size: %d \n",size);
}
for (Int_t iModule=0;iModule<AliGeomManager::LayerSize(iLayerToAlign);iModule++){
j=0;
if(minNtracks<0){
if(AliAlTrack->GetLastIndex(iLayerToAlign-1,iModule)<minNumPoint[iLayerToAlign-1]*(-1*minNtracks/fact))continue;
}
else if(AliAlTrack->GetLastIndex(iLayerToAlign-1,iModule)<minNtracks)continue;
UShort_t volidAl = AliGeomManager::LayerToVolUID(iLayerToAlign,iModule);
TArrayI volIDsFit(size-1);
for (iLayer=(Int_t)AliGeomManager::kSPD1;iLayer<(Int_t)AliGeomManager::kTPC1;iLayer++){
for (Int_t iModule2=0;iModule2<AliGeomManager::LayerSize(iLayer);iModule2++){
volid = AliGeomManager::LayerToVolUID(iLayer,iModule2);
if(volid==volidAl)continue;
volIDsFit.AddAt(volid,j);
j++;
}
}
volIDs.AddAt((Int_t)volidAl,0);
if(iter==iterations-1){
volIDs2.AddAt(volidAl,lastVolid);
lastVolid++;
}
AliAlTrack->AlignVolumes(&volIDs,&volIDsFit,AliGeomManager::kSPD1,AliGeomManager::kSSD2,iter1);
}
}
if((iter+1)%5==0||iter==0||iter==1||iter==2||iter==3||iter==iterations-1){
outname="RealignObj";
outname+=(iter+1);
outname.Append(".root");
AliAlTrack->WriteRealignObjArray(outname.Data(),AliGeomManager::kSPD1,AliGeomManager::kSSD2);
}
}
if(lastVolid==0){printf("No modules could be realigned \n");return;}
printf("End of selecting modules cycle: %d modules selected \n",lastVolid);
for(Int_t k=0;k<volIDs2.GetSize();k++){
if(volIDs2.At(k)==0)break;
layerNum=AliGeomManager::VolUIDToLayer(volIDs2.At(k),modNum);
ntVolumeAlign->Fill(layerNum,modNum,volIDs2.At(k));
}
TFile *f=new TFile("RealignVolNt.root","RECREATE");
f->cd();
ntVolumeAlign->Write();
f->Close();
timer->Stop();
timer->Print();
return;
}
RealignmentAnalysisITSIndependVol.C:1 RealignmentAnalysisITSIndependVol.C:2 RealignmentAnalysisITSIndependVol.C:3 RealignmentAnalysisITSIndependVol.C:4 RealignmentAnalysisITSIndependVol.C:5 RealignmentAnalysisITSIndependVol.C:6 RealignmentAnalysisITSIndependVol.C:7 RealignmentAnalysisITSIndependVol.C:8 RealignmentAnalysisITSIndependVol.C:9 RealignmentAnalysisITSIndependVol.C:10 RealignmentAnalysisITSIndependVol.C:11 RealignmentAnalysisITSIndependVol.C:12 RealignmentAnalysisITSIndependVol.C:13 RealignmentAnalysisITSIndependVol.C:14 RealignmentAnalysisITSIndependVol.C:15 RealignmentAnalysisITSIndependVol.C:16 RealignmentAnalysisITSIndependVol.C:17 RealignmentAnalysisITSIndependVol.C:18 RealignmentAnalysisITSIndependVol.C:19 RealignmentAnalysisITSIndependVol.C:20 RealignmentAnalysisITSIndependVol.C:21 RealignmentAnalysisITSIndependVol.C:22 RealignmentAnalysisITSIndependVol.C:23 RealignmentAnalysisITSIndependVol.C:24 RealignmentAnalysisITSIndependVol.C:25 RealignmentAnalysisITSIndependVol.C:26 RealignmentAnalysisITSIndependVol.C:27 RealignmentAnalysisITSIndependVol.C:28 RealignmentAnalysisITSIndependVol.C:29 RealignmentAnalysisITSIndependVol.C:30 RealignmentAnalysisITSIndependVol.C:31 RealignmentAnalysisITSIndependVol.C:32 RealignmentAnalysisITSIndependVol.C:33 RealignmentAnalysisITSIndependVol.C:34 RealignmentAnalysisITSIndependVol.C:35 RealignmentAnalysisITSIndependVol.C:36 RealignmentAnalysisITSIndependVol.C:37 RealignmentAnalysisITSIndependVol.C:38 RealignmentAnalysisITSIndependVol.C:39 RealignmentAnalysisITSIndependVol.C:40 RealignmentAnalysisITSIndependVol.C:41 RealignmentAnalysisITSIndependVol.C:42 RealignmentAnalysisITSIndependVol.C:43 RealignmentAnalysisITSIndependVol.C:44 RealignmentAnalysisITSIndependVol.C:45 RealignmentAnalysisITSIndependVol.C:46 RealignmentAnalysisITSIndependVol.C:47 RealignmentAnalysisITSIndependVol.C:48 RealignmentAnalysisITSIndependVol.C:49 RealignmentAnalysisITSIndependVol.C:50 RealignmentAnalysisITSIndependVol.C:51 RealignmentAnalysisITSIndependVol.C:52 RealignmentAnalysisITSIndependVol.C:53 RealignmentAnalysisITSIndependVol.C:54 RealignmentAnalysisITSIndependVol.C:55 RealignmentAnalysisITSIndependVol.C:56 RealignmentAnalysisITSIndependVol.C:57 RealignmentAnalysisITSIndependVol.C:58 RealignmentAnalysisITSIndependVol.C:59 RealignmentAnalysisITSIndependVol.C:60 RealignmentAnalysisITSIndependVol.C:61 RealignmentAnalysisITSIndependVol.C:62 RealignmentAnalysisITSIndependVol.C:63 RealignmentAnalysisITSIndependVol.C:64 RealignmentAnalysisITSIndependVol.C:65 RealignmentAnalysisITSIndependVol.C:66 RealignmentAnalysisITSIndependVol.C:67 RealignmentAnalysisITSIndependVol.C:68 RealignmentAnalysisITSIndependVol.C:69 RealignmentAnalysisITSIndependVol.C:70 RealignmentAnalysisITSIndependVol.C:71 RealignmentAnalysisITSIndependVol.C:72 RealignmentAnalysisITSIndependVol.C:73 RealignmentAnalysisITSIndependVol.C:74 RealignmentAnalysisITSIndependVol.C:75 RealignmentAnalysisITSIndependVol.C:76 RealignmentAnalysisITSIndependVol.C:77 RealignmentAnalysisITSIndependVol.C:78 RealignmentAnalysisITSIndependVol.C:79 RealignmentAnalysisITSIndependVol.C:80 RealignmentAnalysisITSIndependVol.C:81 RealignmentAnalysisITSIndependVol.C:82 RealignmentAnalysisITSIndependVol.C:83 RealignmentAnalysisITSIndependVol.C:84 RealignmentAnalysisITSIndependVol.C:85 RealignmentAnalysisITSIndependVol.C:86 RealignmentAnalysisITSIndependVol.C:87 RealignmentAnalysisITSIndependVol.C:88 RealignmentAnalysisITSIndependVol.C:89 RealignmentAnalysisITSIndependVol.C:90 RealignmentAnalysisITSIndependVol.C:91 RealignmentAnalysisITSIndependVol.C:92 RealignmentAnalysisITSIndependVol.C:93 RealignmentAnalysisITSIndependVol.C:94 RealignmentAnalysisITSIndependVol.C:95 RealignmentAnalysisITSIndependVol.C:96 RealignmentAnalysisITSIndependVol.C:97 RealignmentAnalysisITSIndependVol.C:98 RealignmentAnalysisITSIndependVol.C:99 RealignmentAnalysisITSIndependVol.C:100 RealignmentAnalysisITSIndependVol.C:101 RealignmentAnalysisITSIndependVol.C:102 RealignmentAnalysisITSIndependVol.C:103 RealignmentAnalysisITSIndependVol.C:104 RealignmentAnalysisITSIndependVol.C:105 RealignmentAnalysisITSIndependVol.C:106 RealignmentAnalysisITSIndependVol.C:107 RealignmentAnalysisITSIndependVol.C:108 RealignmentAnalysisITSIndependVol.C:109 RealignmentAnalysisITSIndependVol.C:110 RealignmentAnalysisITSIndependVol.C:111 RealignmentAnalysisITSIndependVol.C:112 RealignmentAnalysisITSIndependVol.C:113 RealignmentAnalysisITSIndependVol.C:114 RealignmentAnalysisITSIndependVol.C:115 RealignmentAnalysisITSIndependVol.C:116 RealignmentAnalysisITSIndependVol.C:117 RealignmentAnalysisITSIndependVol.C:118 RealignmentAnalysisITSIndependVol.C:119 RealignmentAnalysisITSIndependVol.C:120 RealignmentAnalysisITSIndependVol.C:121 RealignmentAnalysisITSIndependVol.C:122 RealignmentAnalysisITSIndependVol.C:123 RealignmentAnalysisITSIndependVol.C:124 RealignmentAnalysisITSIndependVol.C:125 RealignmentAnalysisITSIndependVol.C:126 RealignmentAnalysisITSIndependVol.C:127 RealignmentAnalysisITSIndependVol.C:128 RealignmentAnalysisITSIndependVol.C:129 RealignmentAnalysisITSIndependVol.C:130 RealignmentAnalysisITSIndependVol.C:131 RealignmentAnalysisITSIndependVol.C:132 RealignmentAnalysisITSIndependVol.C:133 RealignmentAnalysisITSIndependVol.C:134 RealignmentAnalysisITSIndependVol.C:135 RealignmentAnalysisITSIndependVol.C:136 RealignmentAnalysisITSIndependVol.C:137 RealignmentAnalysisITSIndependVol.C:138 RealignmentAnalysisITSIndependVol.C:139 RealignmentAnalysisITSIndependVol.C:140 RealignmentAnalysisITSIndependVol.C:141 RealignmentAnalysisITSIndependVol.C:142 RealignmentAnalysisITSIndependVol.C:143 RealignmentAnalysisITSIndependVol.C:144 RealignmentAnalysisITSIndependVol.C:145 RealignmentAnalysisITSIndependVol.C:146 RealignmentAnalysisITSIndependVol.C:147 RealignmentAnalysisITSIndependVol.C:148 RealignmentAnalysisITSIndependVol.C:149 RealignmentAnalysisITSIndependVol.C:150 RealignmentAnalysisITSIndependVol.C:151 RealignmentAnalysisITSIndependVol.C:152 RealignmentAnalysisITSIndependVol.C:153 RealignmentAnalysisITSIndependVol.C:154 RealignmentAnalysisITSIndependVol.C:155 RealignmentAnalysisITSIndependVol.C:156 RealignmentAnalysisITSIndependVol.C:157