46 #if !defined(__CINT__) || defined(__MAKECINT__) 48 #include "TObjArray.h" 62 #include "TDatabasePDG.h" 77 #include "TGraphErrors.h" 79 #include "TGeoGlobalMagField.h" 81 #include "TLinearFitter.h" 82 #include "TStopwatch.h" 83 #include "AliTPCCorrectionFit.h" 239 printf(
"RegisterAliTPCFCVoltError3D()");
243 corrField3D->
Print();
296 for (Int_t isec=0; isec<18; isec++){
297 Double_t phi=TMath::Pi()*isec/9.;
337 rotOFC->SetName(
"rotOFC");rotOFC->SetTitle(
"rotOFC");
338 rodOFC1->SetName(
"rodOFC1");rodOFC1->SetTitle(
"rodOFC1");
339 rodOFC2->SetName(
"rodOFC2");rodOFC2->SetTitle(
"rodOFC2");
340 rotIFC->SetName(
"rotIFC");rotIFC->SetTitle(
"rotIFC");
341 rodIFC1->SetName(
"rodIFC1");rodIFC1->SetTitle(
"rodIFC1");
342 rodIFC2->SetName(
"rodIFC2");rodIFC2->SetTitle(
"rodIFC2");
344 rodIFCShift->SetName(
"rodIFCShift");rodIFCShift->SetTitle(
"rodIFCShift");
345 rodIFCSin->SetName(
"rodIFCSin");rodIFCSin->SetTitle(
"rodIFCSin");
346 rodIFCCos->SetName(
"rodIFCCos");rodIFCCos->SetTitle(
"rodIFCCos");
348 rodOFCShift->SetName(
"rodOFCShift");rodOFCShift->SetTitle(
"rodOFCShift");
349 rodOFCSin->SetName(
"rodOFCSin");rodOFCSin->SetTitle(
"rodOFCSin");
350 rodOFCCos->SetName(
"rodOFCCos");rodOFCCos->SetTitle(
"rodOFCCos");
355 cs->Add(rotIFC); cs->Add(rotOFC);
356 cs->Add(rodIFC1); cs->Add(rodOFC1);
357 cs->Add(rodIFC2); cs->Add(rodOFC2);
358 cs->Add(rodIFCShift); cs->Add(rodIFCSin); cs->Add(rodIFCCos);
359 cs->Add(rodOFCShift); cs->Add(rodOFCSin); cs->Add(rodOFCCos);
363 corrField3D->
Print();
365 corrField3D->Write(
"TPCFCVoltError3D");
395 ::Info(
"RegisterAliTPCFCVoltError3DRodFCSideRadiusType()",
"Start");
397 TFile * fCorrectionsRodFCSideRadiusType =
TFile::Open(
"TPCCorrectionPrimitivesFieldCage.root",
"update");
398 if (!fCorrectionsRodFCSideRadiusType) fCorrectionsRodFCSideRadiusType =
TFile::Open(
"TPCCorrectionPrimitivesFieldCage.root",
"recreate");
404 for (Int_t itype=0; itype<3; itype++){
405 for (Int_t iside=0; iside<2; iside++){
406 for (Int_t ifc=0; ifc<2; ifc++){
407 Int_t
id=4*itype+2*iside+ifc;
410 ::Info(
"Read AliTPCFCVoltError3DRodFCSideRadiusType", TString::Format(
"Init: rodFCSide%dRadius%dType%d\tId=%d",iside,ifc,itype,900+
id).Data());
415 corrFieldCage->
Print();
417 for (Int_t itype=0; itype<3; itype++){
418 for (Int_t iside=0; iside<2; iside++){
419 for (Int_t ifc=0; ifc<2; ifc++){
420 Int_t
id=4*itype+2*iside+ifc;
422 corr->SetName(TString::Format(
"rodFCSide%dRadius%dType%d",iside,ifc,itype).Data());
423 corr->SetTitle(TString::Format(
"rodFCSide%dRadius%dType%d",iside,ifc,itype).Data());
425 for (Int_t isec=0; isec<18; isec++){
426 Double_t phi=TMath::Pi()*isec/9.;
427 Int_t sectorOffset=(ifc==0) ? 0:18;
429 Double_t sectorVoltage=0;
430 if (itype==0) sectorVoltage=volt;
431 if (itype==1) sectorVoltage=volt*TMath::Sin(phi);
432 if (itype==2) sectorVoltage=volt*TMath::Cos(phi);
441 ::Info(
"Generate AliTPCFCVoltError3DRodFCSideRadiusType", TString::Format(
"Init: rodFCSide%dRadius%dType%d",iside,ifc,itype).Data());
452 corrFieldCage->
Print();
453 fCorrectionsRodFCSideRadiusType->cd();
454 corrFieldCage->Write(
"TPCRodFCSideRadiusType");
456 fCorrectionsRodFCSideRadiusType->Close();
457 ::Info(
"RegisterAliTPCFCVoltError3DRodFCSideRadiusType()",
"End");
473 printf(
"RegisterAliTPCCalibGlobalMisalignment()\n");
481 matrixX.SetDx(0.1); matrixY.SetDy(0.1); matrixZ.SetDz(0.1);
482 rot0.SetAngles(0.001*TMath::RadToDeg(),0,0);
483 rot1.SetAngles(0,0.001*TMath::RadToDeg(),0);
484 rot2.SetAngles(0,0,0.001*TMath::RadToDeg());
486 rot90.SetAngles(0,90,0);
487 rot2.MultiplyBy(&rot90,kTRUE);
488 rot90.SetAngles(0,-90,0);
489 rot2.MultiplyBy(&rot90,kFALSE);
493 alignRot0->SetName(
"alignRot0");
496 alignRot1->SetName(
"alignRot1");
499 alignRot2->SetName(
"alignRot2");
503 alignTrans0->SetName(
"alignTrans0");
506 alignTrans1->SetName(
"alignTrans1");
509 alignTrans2->SetName(
"alignTrans2");
515 alignRot0D[0]->SetName(
"alignRot0D");
518 alignRot1D[0]->SetName(
"alignRot1D");
521 alignRot2D[0]->SetName(
"alignRot2D");
525 alignTrans0D[0]->SetName(
"alignTrans0D");
528 alignTrans1D[0]->SetName(
"alignTrans1D");
531 alignTrans2D[0]->SetName(
"alignTrans2D");
539 for (Int_t isec=0; isec<72; isec++){
540 TGeoHMatrix *matrixDX =
new TGeoHMatrix;
541 TGeoHMatrix *matrixDY =
new TGeoHMatrix;
542 TGeoRotation *matrixDPhi=
new TGeoRotation;
543 arrayDX->AddAt(matrixDX,isec);
544 arrayDY->AddAt(matrixDY,isec);
545 arrayDPhi->AddAt(matrixDPhi,isec);
546 if (isec%36<18) matrixDX->SetDx(isec%18<9?0.1:-0.1);
547 if (isec%36<18) matrixDY->SetDy(isec%18<9?0.1:-0.1);
548 if (isec%36<18) matrixDPhi->SetAngles((isec%18<9?0.001:-0.001)*TMath::RadToDeg(),0,0);
551 alignTrans0D[1]->SetName(
"alignTrans0UDA");
554 alignTrans1D[1]->SetName(
"alignTrans1UDA");
557 alignRot0D[1]->SetName(
"alignRot0UDA");
562 for (Int_t isec=0; isec<72; isec++){
563 TGeoHMatrix *matrixDX =
new TGeoHMatrix;
564 TGeoHMatrix *matrixDY =
new TGeoHMatrix;
565 TGeoRotation *matrixDPhi=
new TGeoRotation;
566 arrayDX->AddAt(matrixDX,isec);
567 arrayDY->AddAt(matrixDY,isec);
568 arrayDPhi->AddAt(matrixDPhi,isec);
569 if (isec%36>=18) matrixDX->SetDx(isec%18<9?0.1:-0.1);
570 if (isec%36>=18) matrixDY->SetDy(isec%18<9?0.1:-0.1);
571 if (isec%36>=18) matrixDPhi->SetAngles((isec%18<9?0.001:-0.001)*TMath::RadToDeg(),0,0);
574 alignTrans0D[2]->SetName(
"alignTrans0UDC");
577 alignTrans1D[2]->SetName(
"alignTrans1UDC");
580 alignRot0D[2]->SetName(
"alignRot0UDC");
606 Double_t ezField = 400;
609 Double_t wtP = -10.0 * (0.5*10) * vdrift / ezField ;
610 Double_t wtM = -10.0 * (0.5*10) * vdrift / -ezField ;
612 printf(
"RegisterAliTPCBoundaryVoltError()\n");
618 Float_t bound0[8] = { 0, 0,0,0,0,0,0,0};
619 Float_t boundAi[8] = { 0, 0,0,0,0,0,0,0};
620 Float_t boundCi[8] = { 0, 0,0,0,0,0,0,0};
621 for (Int_t ipar=0; ipar<8; ipar++){
625 boundaryVoltErrorA[ipar]->SetName(Form(
"BoundaryVoltErrorAsidePar%d",ipar));
626 boundaryVoltErrorA[ipar]->SetTitle(Form(
"BoundaryVoltErrorAsidePar%d",ipar));
627 boundaryVoltErrorC[ipar]->SetName(Form(
"BoundaryVoltErrorCsidePar%d",ipar));
628 boundaryVoltErrorC[ipar]->SetTitle(Form(
"BoundaryVoltErrorCsidePar%d",ipar));
629 for (Int_t jpar=0; jpar<8; jpar++)
if (ipar!=jpar){
641 Float_t tempboundAi[8] = { 0, 0,0,0,0,0,-boundCi[6],-boundCi[7]};
647 array->AddAt(boundaryVoltErrorA[ipar],ipar);
648 array->AddAt(boundaryVoltErrorC[ipar],ipar+8);
649 boundaryVoltErrorA[ipar]->
Print();
650 boundaryVoltErrorC[ipar]->
Print();
657 corrField2D->
Print();
659 corrField2D->SetName(
"TPCFCVoltError2D");
660 corrField2D->SetTitle(
"TPCFCVoltError2D");
661 corrField2D->Write(
"TPCFCVoltError2D");
664 for (Int_t ipar=0; ipar<8; ipar++){
671 for (Int_t ipar=0; ipar<8; ipar++){
705 exbShape->SetName(
"TPCExBShape");
706 exbShape->SetTitle(
"TPCExBShape");
712 exbShapeT1X->SetName(
"TPCExbShapeT1X");
713 exbShapeT1X->SetTitle(
"TPCExbShapeT1X");
715 exbShapeT1X->
Print();
719 exbShapeT2X->SetName(
"TPCExbShapeT2X");
720 exbShapeT2X->SetTitle(
"TPCExbShapeT2X");
722 exbShapeT2X->
Print();
733 twistX->SetName(
"ExBTwistX");
734 twistX->SetTitle(
"ExBTwistX");
736 twistY->SetName(
"ExBTwistY");
737 twistY->SetTitle(
"ExBTwistY");
747 for (Int_t idrift=0; idrift<7; idrift++) {
750 calibDrift[0]->SetName(
"driftT0");
751 calibDrift[0]->SetTitle(
"driftT0");
754 calibDrift[1]->SetName(
"driftScale0");
755 calibDrift[1]->SetTitle(
"driftScale0");
757 calibDrift[2]->SetName(
"driftScaleR");
758 calibDrift[2]->SetTitle(
"driftScaleR");
760 calibDrift[3]->SetName(
"driftScaleX");
761 calibDrift[3]->SetTitle(
"driftScaleX");
763 calibDrift[4]->SetName(
"driftScaleY");
764 calibDrift[4]->SetTitle(
"driftScaleY");
767 calibDrift[5]->SetName(
"driftIROCDZ");
768 calibDrift[5]->SetTitle(
"driftIROCDZ");
771 calibDrift[6]->SetName(
"driftOROCDT");
772 calibDrift[6]->SetTitle(
"driftOROCDT");
786 Double_t ezField = 400;
789 Double_t wtP = -10.0 * (0.5*10) * vdrift / ezField ;
790 Double_t wtM = -10.0 * (0.5*10) * vdrift / -ezField ;
808 printf(
"RegisterAliTPCROCVoltError3D()");
809 Double_t kAngle=0.001;
814 TMatrixD matrix(72,3);
817 TFile *fCorrectionsROC=0;
818 fCorrectionsROC =
TFile::Open(
"TPCCorrectionPrimitivesROC.root");
822 fCorrectionsROC =
TFile::Open(
"TPCCorrectionPrimitivesROC.root",
"recreate");
825 corrField3D->
Print();
867 for (Int_t isec=0; isec<72; isec++){
868 Double_t secAlpha = TMath::DegToRad()*(10.+20.*(((Int_t)isec)%18));
869 matrix(isec,0)=0; matrix(isec,1)=0; matrix(isec,2)=0;
871 matrix(isec,0) = kAngle*TMath::Cos(secAlpha)*lxRef;
872 matrix(isec,1) = kAngle*TMath::Cos(secAlpha);
873 matrix(isec,2) = -kAngle*TMath::Sin(secAlpha);
878 for (Int_t isec=0; isec<72; isec++){
879 Double_t secAlpha = TMath::DegToRad()*(10.+20.*(((Int_t)isec)%18));
880 matrix(isec,0)=0; matrix(isec,1)=0; matrix(isec,2)=0;
882 matrix(isec,0) = kAngle*TMath::Sin(secAlpha)*lxRef;
883 matrix(isec,1) = kAngle*TMath::Sin(secAlpha);
884 matrix(isec,2) = kAngle*TMath::Cos(secAlpha);
889 for (Int_t isec=0; isec<72; isec++){
890 Double_t secAlpha = TMath::DegToRad()*(10.+20.*(((Int_t)isec)%18));
891 matrix(isec,0)=0; matrix(isec,1)=0; matrix(isec,2)=0;
893 matrix(isec,0) = kAngle*TMath::Cos(secAlpha)*lxRef;
894 matrix(isec,1) = kAngle*TMath::Cos(secAlpha);
895 matrix(isec,2) = -kAngle*TMath::Sin(secAlpha);
900 for (Int_t isec=0; isec<72; isec++){
901 Double_t secAlpha = TMath::DegToRad()*(10.+20.*(((Int_t)isec)%18));
902 matrix(isec,0)=0; matrix(isec,1)=0; matrix(isec,2)=0;
904 matrix(isec,0) = kAngle*TMath::Sin(secAlpha)*lxRef;
905 matrix(isec,1) = kAngle*TMath::Sin(secAlpha);
906 matrix(isec,2) = kAngle*TMath::Cos(secAlpha);
913 for (Int_t isec=0; isec<72; isec++){
914 matrix(isec,0)=0; matrix(isec,1)=0; matrix(isec,2)=0;
916 matrix(isec,0) = 0.1;
923 for (Int_t isec=0; isec<72; isec++){
924 matrix(isec,0)=0; matrix(isec,1)=0; matrix(isec,2)=0;
925 if (isec>=18 && isec<36){
926 matrix(isec,0) = 0.1;
935 for (Int_t isec=0; isec<72; isec++){
936 matrix(isec,0)=0; matrix(isec,1)=0; matrix(isec,2)=0;
938 matrix(isec,0) = (isec%18<9)? 0.05:-0.05;
945 for (Int_t isec=0; isec<72; isec++){
946 matrix(isec,0)=0; matrix(isec,1)=0; matrix(isec,2)=0;
948 matrix(isec,0) = (isec%18<9)?0.05:-0.05;
956 for (Int_t isec=0; isec<72; isec++){
957 matrix(isec,0)=0; matrix(isec,1)=0; matrix(isec,2)=0;
960 matrix(isec,1) = kAngle;
967 for (Int_t isec=0; isec<72; isec++){
968 matrix(isec,0)=0; matrix(isec,1)=0; matrix(isec,2)=0;
969 if (isec>=18 && isec<36){
971 matrix(isec,1) = kAngle;
978 for (Int_t isec=0; isec<72; isec++){
979 matrix(isec,0)=0; matrix(isec,1)=0; matrix(isec,2)=0;
982 matrix(isec,1) = (isec%18<9)?kAngle:-kAngle;
989 for (Int_t isec=0; isec<72; isec++){
990 matrix(isec,0)=0; matrix(isec,1)=0; matrix(isec,2)=0;
993 matrix(isec,1) = (isec%18<9)?kAngle:-kAngle;
1022 rocRotgXA->SetName(
"rocRotgXA");rocRotgXA->SetTitle(
"rocRotgXA");
1023 rocRotgYA->SetName(
"rocRotgYA");rocRotgYA->SetTitle(
"rocRotgYA");
1024 rocRotgXC->SetName(
"rocRotgXC");rocRotgXC->SetTitle(
"rocRotgXC");
1025 rocRotgYC->SetName(
"rocRotgYC");rocRotgYC->SetTitle(
"rocRotgYC");
1026 rocDzIROCA->SetName(
"rocDzIROCA");rocDzIROCA->SetTitle(
"rocDzIROCA");
1027 rocDzIROCC->SetName(
"rocDzIROCC");rocDzIROCC->SetTitle(
"rocDzIROCC");
1028 rocDzUDA->SetName(
"rocDzUDA");rocDzUDA->SetTitle(
"rocDzUDA");
1029 rocDzUDC->SetName(
"rocDzUDC");rocDzUDC->SetTitle(
"rocDzUDC");
1030 rocRotIROCA->SetName(
"rocRotIROCA");rocRotIROCA->SetTitle(
"rocRotIROCA");
1031 rocRotIROCC->SetName(
"rocRotIROCC");rocRotIROCC->SetTitle(
"rocRotIROCC");
1032 rocRotUDA->SetName(
"rocRotUDA");rocRotUDA->SetTitle(
"rocRotUDA");
1033 rocRotUDC->SetName(
"rocRotUDC");rocRotUDC->SetTitle(
"rocRotUDC");
1041 cs->Add(rocDzIROCA);
1042 cs->Add(rocDzIROCC);
1045 cs->Add(rocRotIROCA);
1046 cs->Add(rocRotIROCC);
1051 corrField3D->
Print();
1052 fCorrectionsROC->cd();
1053 corrField3D->
Init();
1054 corrField3D->
Print(
"da");
1055 fCorrectionsROC->cd();
1056 corrField3D->Write(
"TPCROCVoltError3DRotationgXgY");
1141 fCorrectionsROC->Close();
1142 delete fCorrectionsROC;
1161 Double_t ezField = 400;
1169 printf(
"RegisterAliTPCROCVoltError3DSector()");
1170 Double_t kAngle=0.001;
1174 TMatrixD matrix(72,3);
1177 TFile *fCorrectionsROC=0;
1178 fCorrectionsROC =
TFile::Open(
"TPCCorrectionPrimitivesSector.root");
1181 if (!corrField3DSector){
1182 fCorrectionsROC =
TFile::Open(
"TPCCorrectionPrimitivesSector.root",
"recreate");
1184 if (corrField3DSector) {
1185 corrField3DSector->
Print();
1208 matrix.Zero(); matrix(0,0)=kDz;
1210 matrix.Zero(); matrix(0,1)=kAngle;
1212 matrix.Zero(); matrix(36,0)=kDz;
1214 matrix.Zero(); matrix(36,1)=kAngle;
1217 matrix.Zero(); matrix(18,0)=kDz;
1219 matrix.Zero(); matrix(18,1)=kAngle;
1221 matrix.Zero(); matrix(36+18,0)=kDz;
1223 matrix.Zero(); matrix(36+18,1)=kAngle;
1238 rocShiftIROCA0->SetName(
"rocShiftIROCA0");rocShiftIROCA0->SetTitle(
"rocShiftIROCA0");
1239 rocRotIROCA0->SetName(
"rocRotIROCA0");rocRotIROCA0->SetTitle(
"rocRotIROCA0");
1240 rocShiftOROCA0->SetName(
"rocShiftOROCA0"); rocShiftOROCA0->SetTitle(
"rocShiftOROCA0");
1241 rocRotOROCA0->SetName(
"rocRotOROCA0");rocRotOROCA0->SetTitle(
"rocRotOROCA0");
1243 rocShiftIROCC0->SetName(
"rocShiftIROCC0");rocShiftIROCC0->SetTitle(
"rocShiftIROCC0");
1244 rocRotIROCC0->SetName(
"rocRotIROCC0");rocRotIROCC0->SetTitle(
"rocRotIROCC0");
1245 rocShiftOROCC0->SetName(
"rocShiftOROCC0");rocShiftOROCC0->SetTitle(
"rocShiftOROCC0");
1246 rocRotOROCC0->SetName(
"rocRotOROCC0");rocRotOROCC0->SetTitle(
"rocRotOROCC0");
1250 cs->Add(rocShiftIROCA0);
1251 cs->Add(rocRotIROCA0);
1252 cs->Add(rocShiftOROCA0);
1253 cs->Add(rocRotOROCA0);
1254 cs->Add(rocShiftIROCC0);
1255 cs->Add(rocRotIROCC0);
1256 cs->Add(rocShiftOROCC0);
1257 cs->Add(rocRotOROCC0);
1261 corrField3DSector->
Print();
1264 fCorrectionsROC->cd();
1265 corrField3DSector->
Init();
1266 corrField3DSector->
Print(
"da");
1267 fCorrectionsROC->cd();
1268 corrField3DSector->Write(
"TPCROCVoltError3DSector");
1281 Double_t wtp = -10.0 * (0.5*10) * vdrift / ezField ;
1282 Double_t wtm = -10.0 * (0.5*10) * vdrift / -ezField ;
1346 fCorrectionsROC->Close();
1347 delete fCorrectionsROC;
1363 corr->AddLast(twistX);
1364 corr->AddLast(twistY);
1365 corr->AddLast(exbShape);
1366 corr->AddLast(exbShapeT1X);
1367 corr->AddLast(exbShapeT2X);
1369 for (Int_t i=0; i<8; i++){
1370 corr->AddLast(boundaryVoltErrorA[i]);
1371 corr->AddLast(boundaryVoltErrorC[i]);
1376 corr->AddLast(rodIFCCos);
1377 corr->AddLast(rodIFCSin);
1378 corr->AddLast(rodOFCSin);
1379 corr->AddLast(rodOFCCos);
1381 corr->AddLast(alignTrans0);
1382 corr->AddLast(alignTrans1);
1383 corr->AddLast(alignTrans2);
1384 corr->AddLast(alignRot0);
1385 corr->AddLast(alignRot1);
1386 corr->AddLast(alignRot2);
1388 corr->AddLast(alignTrans0D[0]);
1389 corr->AddLast(alignTrans1D[0]);
1390 corr->AddLast(alignTrans2D[0]);
1391 corr->AddLast(alignRot0D[0]);
1392 corr->AddLast(alignRot1D[0]);
1393 corr->AddLast(alignRot2D[0]);
1394 corr->AddLast(alignTrans0D[1]);
1395 corr->AddLast(alignTrans1D[1]);
1396 corr->AddLast(alignRot0D[1]);
1397 corr->AddLast(alignTrans0D[2]);
1398 corr->AddLast(alignTrans1D[2]);
1399 corr->AddLast(alignRot0D[2]);
1403 corr->AddLast(rocRotgXA);
1404 corr->AddLast(rocRotgYA);
1405 corr->AddLast(rocRotgXC);
1406 corr->AddLast(rocRotgYC);
1407 corr->AddLast(rocDzIROCA);
1408 corr->AddLast(rocDzIROCC);
1409 corr->AddLast(rocRotIROCA);
1410 corr->AddLast(rocRotIROCC);
1411 corr->AddLast(rocDzUDA);
1412 corr->AddLast(rocDzUDC);
1413 corr->AddLast(rocRotUDA);
1414 corr->AddLast(rocRotUDC);
1417 corr->AddLast(calibDrift[0]);
1418 corr->AddLast(calibDrift[1]);
1419 corr->AddLast(calibDrift[2]);
1420 corr->AddLast(calibDrift[3]);
1421 corr->AddLast(calibDrift[4]);
1422 corr->AddLast(calibDrift[5]);
1423 corr->AddLast(calibDrift[6]);
1427 testCorr->AddLast(rodIFCCos);
1428 testCorr->AddLast(rodIFCSin);
1429 testCorr->AddLast(rodOFCSin);
1430 testCorr->AddLast(rodOFCCos);
1432 testCorr->AddLast(twistX);
1433 testCorr->AddLast(twistY);
1434 testCorr->AddLast(alignTrans0);
1435 testCorr->AddLast(alignTrans1);
1436 testCorr->AddLast(alignTrans2);
1437 testCorr->AddLast(alignRot0);
1438 testCorr->AddLast(alignRot1);
1439 testCorr->AddLast(alignRot2);
1440 testCorr->AddLast(rocRotgXA);
1441 testCorr->AddLast(rocRotgYA);
1442 testCorr->AddLast(rocRotgXC);
1443 testCorr->AddLast(rocRotgYC);
1444 testCorr->AddLast(rocDzIROCA);
1445 testCorr->AddLast(rocDzIROCC);
1446 testCorr->AddLast(rocRotIROCA);
1447 testCorr->AddLast(rocRotIROCC);
1448 Int_t entries=testCorr->GetEntries();
1449 TVectorD weights(entries);
1450 for (Int_t i=0; i<entries; i++) weights[i]=1;
1453 composedTest->SetName(
"FitSample");
1454 composedTest->SetTitle(
"FitSample");
1458 corr->AddLast(composedTest);
1463 cc->SetName(
"ComposedExB");
1464 TFile fexb(
"RegisterCorrectionExB.root",
"recreate");
1465 cc->Write(
"ComposedExB");
1474 TFile * fexb=
TFile::Open(
"RegisterCorrectionExB.root");
1475 if (!fexb) fexb=
TFile::Open(
"../RegisterCorrectionExB.root");
1476 if (!fexb) fexb=
TFile::Open(
"../../RegisterCorrectionExB.root");
1477 if (!fexb) fexb=
TFile::Open(
"../../../RegisterCorrectionExB.root");
1479 if (!fexb)
return 0;
1480 TFile * fitter=
TFile::Open(
"fitCorrection.root");
1482 if (!fitter) fitter=
TFile::Open(
"../fitCorrection.root");
1483 if (!fitter) fitter=
TFile::Open(
"../../fitCorrection.root");
1484 if (!fitter) fitter=
TFile::Open(
"../../../fitCorrection.root");
1488 printf(
"File or correction RegisterCorrectionExB.root doees not exist or corrupted\n\n\n");
1496 if (fitter->GetKey(
"FitBoundary")) corr->AddLast(fitter->Get(
"FitBoundary"));
1497 if (fitter->GetKey(
"FitExBTwist")) corr->AddLast(fitter->Get(
"FitExBTwist"));
1498 if (fitter->GetKey(
"FitAlignGlobal")) corr->AddLast(fitter->Get(
"FitAlignGlobal"));
1499 if (fitter->GetKey(
"FitRodAlignGloba")) corr->AddLast(fitter->Get(
"FitRodAlignGlobal"));
1500 if (fitter->GetKey(
"FitRocAlignGlobal")) corr->AddLast(fitter->Get(
"FitRocAlignGlobal"));
1501 if (fitter->GetKey(
"FitRocAlignZ")) corr->AddLast(fitter->Get(
"FitRocAlignZ"));
1502 if (fitter->GetKey(
"FitAlignLocal")) corr->AddLast(fitter->Get(
"FitAlignLocal"));
1503 if (fitter->GetKey(
"FitAlignTPC")) corr->AddLast(fitter->Get(
"FitAlignTPC"));
1504 if (fitter->GetKey(
"FitAlignTOF")) corr->AddLast(fitter->Get(
"FitAlignTOF"));
1505 if (fitter->GetKey(
"FitAlignTRD")) corr->AddLast(fitter->Get(
"FitAlignTRD"));
1518 TF1 f705Par(
"f705",
"AliTPCCorrectionFit::EvalAtPar(0,0,85, x,0.1,705,0,80)",0,360);
1519 f705Par.SetLineColor(2);f705Par.SetNpx(500);
1520 TF1 f705Helix(
"f705Helix",
"AliTPCCorrectionFit::EvalAtHelix(0,0,85,x,0.1,705,0,80)",0,360);
1521 f705Helix.SetLineColor(4);f705Helix.SetNpx(500);
1523 f705Par.Draw(
"same");
1533 ::Info(
"TestFitSpeed",
"Helix fit");
1534 for (Int_t i=0;i<nEvals; i++) AliTPCCorrectionFit::EvalAtPar(0,0,85,gRandom->Rndm(),0.1,705,0,80);
1537 ::Info(
"TestFitSpeed",
"Parabolicfit");
1538 for (Int_t i=0;i<nEvals; i++) AliTPCCorrectionFit::EvalAtPar(0,0,85,gRandom->Rndm(),0.1,705,0,80);
AliTPCFCVoltError3D * rodIFC2
Double_t fZ0Cside
z- t0*vdrift shift C side
printf("Chi2/npoints = %f\n", TMath::Sqrt(chi2/npoints))
void RegisterAliTPCExBShape()
TFile * Open(const char *filename, Long64_t &nevents)
AliTPCCalibGlobalMisalignment * alignTrans0D[4]
AliTPCComposedCorrection * MakeComposedCorrectionExB()
void SetCopperRodShiftA(Int_t rod, Float_t voltOffset, Bool_t doInit=kTRUE)
Double_t fVScaleY
drift velocity scaling - global y
AliTPCFCVoltError3D class.
AliTPCCalibGlobalMisalignment * alignRot0
AliTPCCalibGlobalMisalignment * alignTrans2
virtual void SetOmegaTauT1T2(Float_t omegaTau, Float_t t1, Float_t t2)
AliTPCCalibGlobalMisalignment * alignRot2
Double_t fIROCZ0
IROC to OROC shift due unknown reason (clusterer shift Ampl. dependents?)
virtual void SetOmegaTauT1T2(Float_t omegaTau, Float_t t1, Float_t t2)
AliTPCExBBShape * exbShapeT1X
void SetOmegaTauT1T2(Float_t omegaTau, Float_t t1, Float_t t2)
AliTPCROCVoltError3D * rocRotIROCA
AliTPCROCVoltError3D * rocRotgXC
virtual void SetOmegaTauT1T2(Float_t omegaTau, Float_t t1, Float_t t2)
AliTPCFCVoltError3D * rodIFCShift
AliTPCROCVoltError3D * rocShiftOROCA0
virtual void Print(Option_t *option="") const
AliTPCBoundaryVoltError * boundaryVoltErrorA[8]
AliTPCFCVoltError3D * rodOFC2
AliTPCFCVoltError3D * rodOFCSin
Double_t fVScale0
drift velocity scaling - constant
AliTPCCalibGlobalMisalignment * alignRot0D[4]
virtual void SetOmegaTauT1T2(Float_t omegaTau, Float_t t1, Float_t t2)
AliTPCROCVoltError3D * rocDzUDC
Double_t fOROCDZ
IROC to OROC slope shift due unknown reason (clusterer shift amplitude dependent?) ...
AliTPCROCVoltError3D * rocRotIROCC0
Double_t fZ0Aside
z- t0*vdrift shift A side
The class calculates the space point distortions due to z offsets of the.
void RegisterAliTPCExBTwist()
AliTPCCalibGlobalMisalignment * alignTrans1D[4]
void InitBoundaryVoltErrorDistortion()
AliTPCROCVoltError3D * rocDzIROCA
void SetRodVoltShiftC(Int_t rod, Float_t voltOffset, Bool_t doInit=kTRUE)
AliTPCROCVoltError3D * rocRotIROCC
void SetAlignSectors(const TObjArray *arraySector)
void SetCopperRodShiftC(Int_t rod, Float_t voltOffset, Bool_t doInit=kTRUE)
void RegisterCorrection(Int_t type=0)
AliTPCCalibGlobalMisalignment * alignTrans1
AliTPCFCVoltError3D * rodIFC1
AliTPCFCVoltError3D * rodOFCCos
void SetYTwist(Float_t yTwist)
AliTPCFCVoltError3D * rotOFC
void RegisterAliTPCROCVoltError3D()
void RegisterAliTPCFCVoltError3D()
void SetBoundariesA(Float_t boundariesA[8])
Double_t fVScaleR
drift velocity scaling - radial
void TestFitSpeed(Int_t nEvals)
void RegisterAliTPCROCVoltError3DSector()
AliTPCComposedCorrection class.
Double_t fVScaleX
drift velocity scaling - global x
AliTPCFCVoltError3D * rodOFC1
void SetXTwist(Float_t xTwist)
void SetCorrections(const TCollection *corrections)
AliTPCFCVoltError3D * rodIFCCos
AliTPCROCVoltError3D * rocShiftIROCC0
Geometry class for a single ROC.
void RegisterAliTPCCalibGlobalMisalignment()
AliTPCExBBShape * exbShapeT2X
AliTPCCalibGlobalMisalignment * alignRot1
void SetElectronArrivalCorrection(Bool_t flag)
AliTPCComposedCorrection * GetCorrectionFromFile()
AliTPCCalibGlobalMisalignment * alignRot2D[4]
virtual void SetOmegaTauT1T2(Float_t omegaTau, Float_t t1, Float_t t2)
AliTPCROCVoltError3D * rocDzIROCC
AliTPCROCVoltError3D * rocRotUDC
void RegisterAliTPCBoundaryVoltError()
AliTPCFCVoltError3D * rodIFCSin
static AliTPCCorrection * GetVisualCorrection(Int_t position)
void SetROCData(TMatrixD *matrix)
AliTPCCorrectionDrift * calibDrift[7]
AliTPCBoundaryVoltError * boundaryVoltErrorC[8]
void SetAlignGlobalDelta(const TGeoMatrix *matrixGlobalDelta)
void RegisterAliTPCCorrectionDrift()
static void AddVisualCorrection(AliTPCCorrection *corr, Int_t position)
AliTPCROCVoltError3D * rocRotgXA
TCollection * GetCorrections() const
void SetBoundariesC(Float_t boundariesC[6])
AliTPCCalibGlobalMisalignment * alignTrans0
void SetRotatedClipVoltA(Int_t rod, Float_t voltOffset, Bool_t doInit=kTRUE)
void SetAlignGlobal(const TGeoMatrix *matrixGlobal)
AliTPCROCVoltError3D * rocDzUDA
void SetRodVoltShiftA(Int_t rod, Float_t voltOffset, Bool_t doInit=kTRUE)
TObjArray * rodFCSideRadiusType
AliTPCROCVoltError3D * rocShiftIROCA0
AliTPCExBBShape * exbShape
void SetBField(const AliMagF *bField)
AliTPCROCVoltError3D * rocRotUDA
AliTPCROCVoltError3D * rocRotIROCA0
virtual void Print(const Option_t *option="") const
AliTPCFCVoltError3D * rodOFCShift
void SetWeights(TVectorD *weights)
Linear drift corrections.
AliTPCFCVoltError3D * rotIFC
static AliTPCROC * Instance()
AliTPCROCVoltError3D * rocRotOROCC0
AliTPCROCVoltError3D * rocRotgYA
AliTPCROCVoltError3D * rocRotgYC
AliTPCCalibGlobalMisalignment * alignTrans2D[4]
void RegisterAliTPCFCVoltError3DRodFCSideRadiusType()
AliTPCROCVoltError3D * rocRotOROCA0
Float_t GetPadRowRadii(UInt_t isec, UInt_t irow) const
AliTPCROCVoltError3D * rocShiftOROCC0
AliTPCCalibGlobalMisalignment * alignRot1D[4]
virtual void Print(Option_t *option="") const
void SetRotatedClipVoltC(Int_t rod, Float_t voltOffset, Bool_t doInit=kTRUE)