#include "AliMagF.h"
#include "TGeoGlobalMagField.h"
#include "AliTPCcalibDB.h"
#include "AliTPCParam.h"
#include "AliLog.h"
#include "TMath.h"
#include "AliTPCROC.h"
#include "TFile.h"
#include "TAxis.h"
#include "TTree.h"
#include "TTreeStream.h"
#include "THnSparse.h"
#include "THnBase.h"
#include "TProfile.h"
#include "TH2F.h"
#include "TH3F.h"
#include "TROOT.h"
#include "AliTPCExBEffectiveSector.h"
ClassImp(AliTPCExBEffectiveSector)
AliTPCExBEffectiveSector::AliTPCExBEffectiveSector()
: AliTPCCorrection("ExB_effectiveSector","ExB effective sector"),
fC0(1.),fC1(0.),
fCorrectionR(0),
fCorrectionRPhi(0),
fCorrectionZ(0)
{
}
AliTPCExBEffectiveSector::~AliTPCExBEffectiveSector() {
delete fCorrectionR;
delete fCorrectionRPhi;
delete fCorrectionZ;
}
void AliTPCExBEffectiveSector::Init() {
AliMagF* magF= (AliMagF*)TGeoGlobalMagField::Instance()->GetField();
if (!magF) AliError("Magneticd field - not initialized");
Double_t bzField = magF->SolenoidField()/10.;
AliTPCParam *param= AliTPCcalibDB::Instance()->GetParameters();
if (!param) AliError("Parameters - not initialized");
Double_t vdrift = param->GetDriftV()/1000000.;
Double_t ezField = 400;
Double_t wt = -10.0 * (bzField*10) * vdrift / ezField ;
SetOmegaTauT1T2(wt,fT1,fT2);
}
void AliTPCExBEffectiveSector::Update(const TTimeStamp &) {
AliMagF* magF= (AliMagF*)TGeoGlobalMagField::Instance()->GetField();
if (!magF) AliError("Magneticd field - not initialized");
Double_t bzField = magF->SolenoidField()/10.;
AliTPCParam *param= AliTPCcalibDB::Instance()->GetParameters();
if (!param) AliError("Parameters - not initialized");
Double_t vdrift = param->GetDriftV()/1000000.;
Double_t ezField = 400;
Double_t wt = -10.0 * (bzField*10) * vdrift / ezField ;
SetOmegaTauT1T2(wt,fT1,fT2);
}
void AliTPCExBEffectiveSector::GetCorrection(const Float_t x[],const Short_t roc,Float_t dx[]) {
dx[0]=0;
dx[1]=0;
dx[2]=0;
if (!fCorrectionRPhi) return;
Double_t phi = TMath::ATan2(x[1],x[0]);
Double_t r = TMath::Sqrt(x[1]*x[1]+x[0]*x[0]);
Double_t sector = 9.*phi/TMath::Pi();
if (sector<0) sector+=18.;
Double_t kZ=x[2]/r;
if (kZ>1.2) kZ= 1.2;
if (kZ<-1.2) kZ= -1.2;
if (roc%36<18) kZ= TMath::Abs(kZ);
if (roc%36>=18) kZ=-TMath::Abs(kZ);
if (TMath::Abs(kZ)<0.15){
kZ = (roc%36<18) ? 0.15:-0.15;
}
Double_t dlR=0;
Double_t dlRPhi=0;
Double_t dlZ=0;
Double_t rr=TMath::Max(r,fCorrectionRPhi->GetYaxis()->GetXmin()+0.01);
rr=TMath::Min(rr,fCorrectionRPhi->GetYaxis()->GetXmax()-0.01);
Double_t kZZ=TMath::Max(kZ,fCorrectionRPhi->GetZaxis()->GetXmin()+0.001);
kZZ=TMath::Min(kZZ,fCorrectionRPhi->GetZaxis()->GetXmax()-0.001);
if (fCorrectionRPhi) {
dlRPhi= -fCorrectionRPhi->GetBinContent(fCorrectionRPhi->FindBin(sector,rr,kZZ));
}
if (fCorrectionR) {
dlR= -fCorrectionR->GetBinContent(fCorrectionR->FindBin(sector,rr,kZZ));
}
if (fCorrectionZ) {
dlZ= -fCorrectionZ->GetBinContent(fCorrectionZ->FindBin(sector,rr,kZZ));
}
Double_t dr = fC0*dlR + fC1*dlRPhi;
Double_t drphi = -fC1*dlR + fC0*dlRPhi;
if ( r > 0.0 ) {
r = r + dr;
phi = phi + drphi/r;
}
dx[0] = r * TMath::Cos(phi) - x[0];
dx[1] = r * TMath::Sin(phi) - x[1];
dx[2] = dlZ;
}
void AliTPCExBEffectiveSector::Print(const Option_t* option) const {
TString opt = option; opt.ToLower();
printf("%s\t%s\n",GetName(),GetTitle());
if (opt.Contains("a")) {
printf(" - T1: %1.4f, T2: %1.4f \n",fT1,fT2);
printf(" - C0: %1.4f, C1: %1.4f \n",fC0,fC1);
}
}
AliTPCExBEffectiveSector.cxx:1 AliTPCExBEffectiveSector.cxx:2 AliTPCExBEffectiveSector.cxx:3 AliTPCExBEffectiveSector.cxx:4 AliTPCExBEffectiveSector.cxx:5 AliTPCExBEffectiveSector.cxx:6 AliTPCExBEffectiveSector.cxx:7 AliTPCExBEffectiveSector.cxx:8 AliTPCExBEffectiveSector.cxx:9 AliTPCExBEffectiveSector.cxx:10 AliTPCExBEffectiveSector.cxx:11 AliTPCExBEffectiveSector.cxx:12 AliTPCExBEffectiveSector.cxx:13 AliTPCExBEffectiveSector.cxx:14 AliTPCExBEffectiveSector.cxx:15 AliTPCExBEffectiveSector.cxx:16 AliTPCExBEffectiveSector.cxx:17 AliTPCExBEffectiveSector.cxx:18 AliTPCExBEffectiveSector.cxx:19 AliTPCExBEffectiveSector.cxx:20 AliTPCExBEffectiveSector.cxx:21 AliTPCExBEffectiveSector.cxx:22 AliTPCExBEffectiveSector.cxx:23 AliTPCExBEffectiveSector.cxx:24 AliTPCExBEffectiveSector.cxx:25 AliTPCExBEffectiveSector.cxx:26 AliTPCExBEffectiveSector.cxx:27 AliTPCExBEffectiveSector.cxx:28 AliTPCExBEffectiveSector.cxx:29 AliTPCExBEffectiveSector.cxx:30 AliTPCExBEffectiveSector.cxx:31 AliTPCExBEffectiveSector.cxx:32 AliTPCExBEffectiveSector.cxx:33 AliTPCExBEffectiveSector.cxx:34 AliTPCExBEffectiveSector.cxx:35 AliTPCExBEffectiveSector.cxx:36 AliTPCExBEffectiveSector.cxx:37 AliTPCExBEffectiveSector.cxx:38 AliTPCExBEffectiveSector.cxx:39 AliTPCExBEffectiveSector.cxx:40 AliTPCExBEffectiveSector.cxx:41 AliTPCExBEffectiveSector.cxx:42 AliTPCExBEffectiveSector.cxx:43 AliTPCExBEffectiveSector.cxx:44 AliTPCExBEffectiveSector.cxx:45 AliTPCExBEffectiveSector.cxx:46 AliTPCExBEffectiveSector.cxx:47 AliTPCExBEffectiveSector.cxx:48 AliTPCExBEffectiveSector.cxx:49 AliTPCExBEffectiveSector.cxx:50 AliTPCExBEffectiveSector.cxx:51 AliTPCExBEffectiveSector.cxx:52 AliTPCExBEffectiveSector.cxx:53 AliTPCExBEffectiveSector.cxx:54 AliTPCExBEffectiveSector.cxx:55 AliTPCExBEffectiveSector.cxx:56 AliTPCExBEffectiveSector.cxx:57 AliTPCExBEffectiveSector.cxx:58 AliTPCExBEffectiveSector.cxx:59 AliTPCExBEffectiveSector.cxx:60 AliTPCExBEffectiveSector.cxx:61 AliTPCExBEffectiveSector.cxx:62 AliTPCExBEffectiveSector.cxx:63 AliTPCExBEffectiveSector.cxx:64 AliTPCExBEffectiveSector.cxx:65 AliTPCExBEffectiveSector.cxx:66 AliTPCExBEffectiveSector.cxx:67 AliTPCExBEffectiveSector.cxx:68 AliTPCExBEffectiveSector.cxx:69 AliTPCExBEffectiveSector.cxx:70 AliTPCExBEffectiveSector.cxx:71 AliTPCExBEffectiveSector.cxx:72 AliTPCExBEffectiveSector.cxx:73 AliTPCExBEffectiveSector.cxx:74 AliTPCExBEffectiveSector.cxx:75 AliTPCExBEffectiveSector.cxx:76 AliTPCExBEffectiveSector.cxx:77 AliTPCExBEffectiveSector.cxx:78 AliTPCExBEffectiveSector.cxx:79 AliTPCExBEffectiveSector.cxx:80 AliTPCExBEffectiveSector.cxx:81 AliTPCExBEffectiveSector.cxx:82 AliTPCExBEffectiveSector.cxx:83 AliTPCExBEffectiveSector.cxx:84 AliTPCExBEffectiveSector.cxx:85 AliTPCExBEffectiveSector.cxx:86 AliTPCExBEffectiveSector.cxx:87 AliTPCExBEffectiveSector.cxx:88 AliTPCExBEffectiveSector.cxx:89 AliTPCExBEffectiveSector.cxx:90 AliTPCExBEffectiveSector.cxx:91 AliTPCExBEffectiveSector.cxx:92 AliTPCExBEffectiveSector.cxx:93 AliTPCExBEffectiveSector.cxx:94 AliTPCExBEffectiveSector.cxx:95 AliTPCExBEffectiveSector.cxx:96 AliTPCExBEffectiveSector.cxx:97 AliTPCExBEffectiveSector.cxx:98 AliTPCExBEffectiveSector.cxx:99 AliTPCExBEffectiveSector.cxx:100 AliTPCExBEffectiveSector.cxx:101 AliTPCExBEffectiveSector.cxx:102 AliTPCExBEffectiveSector.cxx:103 AliTPCExBEffectiveSector.cxx:104 AliTPCExBEffectiveSector.cxx:105 AliTPCExBEffectiveSector.cxx:106 AliTPCExBEffectiveSector.cxx:107 AliTPCExBEffectiveSector.cxx:108 AliTPCExBEffectiveSector.cxx:109 AliTPCExBEffectiveSector.cxx:110 AliTPCExBEffectiveSector.cxx:111 AliTPCExBEffectiveSector.cxx:112 AliTPCExBEffectiveSector.cxx:113 AliTPCExBEffectiveSector.cxx:114 AliTPCExBEffectiveSector.cxx:115 AliTPCExBEffectiveSector.cxx:116 AliTPCExBEffectiveSector.cxx:117 AliTPCExBEffectiveSector.cxx:118 AliTPCExBEffectiveSector.cxx:119 AliTPCExBEffectiveSector.cxx:120 AliTPCExBEffectiveSector.cxx:121 AliTPCExBEffectiveSector.cxx:122 AliTPCExBEffectiveSector.cxx:123 AliTPCExBEffectiveSector.cxx:124 AliTPCExBEffectiveSector.cxx:125 AliTPCExBEffectiveSector.cxx:126 AliTPCExBEffectiveSector.cxx:127 AliTPCExBEffectiveSector.cxx:128 AliTPCExBEffectiveSector.cxx:129 AliTPCExBEffectiveSector.cxx:130 AliTPCExBEffectiveSector.cxx:131 AliTPCExBEffectiveSector.cxx:132 AliTPCExBEffectiveSector.cxx:133 AliTPCExBEffectiveSector.cxx:134 AliTPCExBEffectiveSector.cxx:135 AliTPCExBEffectiveSector.cxx:136 AliTPCExBEffectiveSector.cxx:137 AliTPCExBEffectiveSector.cxx:138 AliTPCExBEffectiveSector.cxx:139 AliTPCExBEffectiveSector.cxx:140 AliTPCExBEffectiveSector.cxx:141 AliTPCExBEffectiveSector.cxx:142 AliTPCExBEffectiveSector.cxx:143 AliTPCExBEffectiveSector.cxx:144 AliTPCExBEffectiveSector.cxx:145 AliTPCExBEffectiveSector.cxx:146 AliTPCExBEffectiveSector.cxx:147 AliTPCExBEffectiveSector.cxx:148 AliTPCExBEffectiveSector.cxx:149 AliTPCExBEffectiveSector.cxx:150 AliTPCExBEffectiveSector.cxx:151 AliTPCExBEffectiveSector.cxx:152 AliTPCExBEffectiveSector.cxx:153 AliTPCExBEffectiveSector.cxx:154 AliTPCExBEffectiveSector.cxx:155 AliTPCExBEffectiveSector.cxx:156 AliTPCExBEffectiveSector.cxx:157 AliTPCExBEffectiveSector.cxx:158 AliTPCExBEffectiveSector.cxx:159 AliTPCExBEffectiveSector.cxx:160 AliTPCExBEffectiveSector.cxx:161 AliTPCExBEffectiveSector.cxx:162 AliTPCExBEffectiveSector.cxx:163 AliTPCExBEffectiveSector.cxx:164 AliTPCExBEffectiveSector.cxx:165 AliTPCExBEffectiveSector.cxx:166 AliTPCExBEffectiveSector.cxx:167 AliTPCExBEffectiveSector.cxx:168 AliTPCExBEffectiveSector.cxx:169 AliTPCExBEffectiveSector.cxx:170 AliTPCExBEffectiveSector.cxx:171 AliTPCExBEffectiveSector.cxx:172 AliTPCExBEffectiveSector.cxx:173 AliTPCExBEffectiveSector.cxx:174 AliTPCExBEffectiveSector.cxx:175 AliTPCExBEffectiveSector.cxx:176 AliTPCExBEffectiveSector.cxx:177 AliTPCExBEffectiveSector.cxx:178 AliTPCExBEffectiveSector.cxx:179 AliTPCExBEffectiveSector.cxx:180 AliTPCExBEffectiveSector.cxx:181 AliTPCExBEffectiveSector.cxx:182 AliTPCExBEffectiveSector.cxx:183 AliTPCExBEffectiveSector.cxx:184 AliTPCExBEffectiveSector.cxx:185 AliTPCExBEffectiveSector.cxx:186 AliTPCExBEffectiveSector.cxx:187 AliTPCExBEffectiveSector.cxx:188 AliTPCExBEffectiveSector.cxx:189 AliTPCExBEffectiveSector.cxx:190 AliTPCExBEffectiveSector.cxx:191 AliTPCExBEffectiveSector.cxx:192 AliTPCExBEffectiveSector.cxx:193