X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=STEER%2FAliMagFMaps.cxx;h=c854dbb9973efc490ea7152bb05b565a4cea1587;hb=64996beaf7c817b33a06c275157dd6ce540e1647;hp=893447067a27ca9bf4ae235a483623d8b6d28de1;hpb=57754f18de9ea15ff92c628bb76a094b3dcf0ef6;p=u%2Fmrichter%2FAliRoot.git diff --git a/STEER/AliMagFMaps.cxx b/STEER/AliMagFMaps.cxx index 893447067a2..c854dbb9973 100644 --- a/STEER/AliMagFMaps.cxx +++ b/STEER/AliMagFMaps.cxx @@ -22,37 +22,40 @@ // Author: Andreas Morsch //------------------------------------------------------------------------ +#include #include +#include #include -#include +#include "AliLog.h" #include "AliFieldMap.h" #include "AliMagFMaps.h" ClassImp(AliMagFMaps) + //_______________________________________________________________________ AliMagFMaps::AliMagFMaps(): fSolenoid(0), fSolenoidUser(0.), - fL3Option(0), - fFieldRead(0) + fL3Option(0) { // // Default constructor // + // + // Don't replicate field information in gAlice fFieldMap[0] = fFieldMap[1] = fFieldMap[2] = 0; } //_______________________________________________________________________ -AliMagFMaps::AliMagFMaps(const char *name, const char *title, const Int_t integ, - const Float_t factor, const Float_t fmax, const Int_t map, - const Int_t l3): +AliMagFMaps::AliMagFMaps(const char *name, const char *title, Int_t integ, + Float_t factor, Float_t fmax, Int_t map, + Int_t l3): AliMagFC(name,title,integ,factor,fmax), fSolenoid(0), fSolenoidUser(0), - fL3Option(l3), - fFieldRead(0) + fL3Option(l3) { // // Standard constructor @@ -62,7 +65,6 @@ AliMagFMaps::AliMagFMaps(const char *name, const char *title, const Int_t integ, fMap = map; fL3Option = l3; ReadField(); - fFieldRead = 1; // // Don't replicate field information in gAlice for (Int_t i = 0; i < 3; i++) fFieldMap[i]->SetWriteEnable(0); @@ -73,8 +75,8 @@ AliMagFMaps::AliMagFMaps(const char *name, const char *title, const Int_t integ, AliMagFMaps::AliMagFMaps(const AliMagFMaps &magf): AliMagFC(magf), fSolenoid(0), - fL3Option(0), - fFieldRead(0) + fSolenoidUser(0), + fL3Option(0) { // // Copy constructor @@ -100,94 +102,78 @@ void AliMagFMaps::ReadField() // // don't read twice // - if (fFieldRead) return; - fFieldRead = 1; + if (!fReadField) return; + fReadField = kFALSE; // - char* fname; + + + char* fname = 0; TFile* file = 0; if (fMap == k2kG) { - if (fL3Option) { - fSolenoid = 2.; - fname = gSystem->ExpandPathName("$(ALICE_ROOT)/data/maps/L3B02.root"); - file = new TFile(fname); - fFieldMap[0] = dynamic_cast(file->Get("L3B02")); - file->Close(); - delete file; - } + fSolenoid = 2.; + fname = gSystem->ExpandPathName("$(ALICE_ROOT)/data/maps/L3B02.root"); + file = new TFile(fname); + fFieldMap[0] = dynamic_cast(file->Get("L3B02")); + file->Close(); + delete file; + delete [] fname; // see documentation to expand filenam fname = gSystem->ExpandPathName("$(ALICE_ROOT)/data/maps/DipB02.root"); file = new TFile(fname); fFieldMap[1] = dynamic_cast(file->Get("DipB02")); file->Close(); delete file;; - + delete [] fname; fname = gSystem->ExpandPathName("$(ALICE_ROOT)/data/maps/ExtB02.root"); file = new TFile(fname); fFieldMap[2] = dynamic_cast(file->Get("ExtB02")); file->Close(); delete file; + delete [] fname; } else if (fMap == k4kG) { - if (fL3Option) { - fSolenoid = 4.; - fname = gSystem->ExpandPathName("$(ALICE_ROOT)/data/maps/L3B04.root"); - file = new TFile(fname); - fFieldMap[0] = dynamic_cast(file->Get("L3B04")); - file->Close(); - delete file; - } - + fSolenoid = 4.; + fname = gSystem->ExpandPathName("$(ALICE_ROOT)/data/maps/L3B04.root"); + file = new TFile(fname); + fFieldMap[0] = dynamic_cast(file->Get("L3B04")); + file->Close(); + delete file; + delete [] fname; fname = gSystem->ExpandPathName("$(ALICE_ROOT)/data/maps/DipB04.root"); file = new TFile(fname); fFieldMap[1] = dynamic_cast(file->Get("DipB04")); file->Close(); + delete [] fname; delete file; fname = gSystem->ExpandPathName("$(ALICE_ROOT)/data/maps/ExtB04.root"); file = new TFile(fname); fFieldMap[2] = dynamic_cast(file->Get("ExtB04")); file->Close(); + delete [] fname; delete file; } else if (fMap == k5kG) { - if (fL3Option) { - fSolenoid = 5.; - fname = gSystem->ExpandPathName("$(ALICE_ROOT)/data/maps/L3B05.root"); - file = new TFile(fname); - fFieldMap[0] = dynamic_cast(file->Get("L3B05")); - file->Close(); - delete file; - } - + fSolenoid = 5.; + fname = gSystem->ExpandPathName("$(ALICE_ROOT)/data/maps/L3B05.root"); + file = new TFile(fname); + fFieldMap[0] = dynamic_cast(file->Get("L3B05")); + file->Close(); + delete file; + delete [] fname; fname = gSystem->ExpandPathName("$(ALICE_ROOT)/data/maps/DipB05.root"); file = new TFile(fname); fFieldMap[1] = dynamic_cast(file->Get("DipB05")); file->Close(); delete file; - + delete [] fname; fname = gSystem->ExpandPathName("$(ALICE_ROOT)/data/maps/ExtB05.root"); file = new TFile(fname); fFieldMap[2] = dynamic_cast(file->Get("ExtB05")); file->Close(); delete file; - - } - - if (!fL3Option) { - // - // Dummy L3 map - fFieldMap[0] = new AliFieldMap(); - fFieldMap[0] -> SetLimits(-800., 800., -800., 800., -700., 700.); - switch(fMap) { - case k2kG: - fSolenoid = 2.; - break; - case k4kG: - fSolenoid = 4.; - break; - case k5kG: - fSolenoid = 5.; - break; - } - fSolenoidUser = fSolenoid; + delete [] fname; } + + if (!fL3Option) fSolenoidUser = fSolenoid; + } //_______________________________________________________________________ @@ -197,11 +183,11 @@ Float_t AliMagFMaps::SolenoidField() const // Returns max. L3 (solenoid) field strength // according to field map setting // - return fSolenoid; + return -Factor()*fSolenoid; } //_______________________________________________________________________ -void AliMagFMaps::Field(Float_t *x, Float_t *b) +void AliMagFMaps::Field(Float_t *x, Float_t *b) const { // // Method to calculate the magnetic field @@ -210,7 +196,7 @@ void AliMagFMaps::Field(Float_t *x, Float_t *b) - if (!fFieldRead) ReadField(); + // if (!fFieldRead) ReadField(); // // Field Maps have been calculated for the coordinate system in which @@ -227,13 +213,15 @@ void AliMagFMaps::Field(Float_t *x, Float_t *b) AliFieldMap* map = 0; if (fFieldMap[0]->Inside(xm[0], xm[1], xm[2])) { map = fFieldMap[0]; - if (!fL3Option) { + Float_t r = TMath::Sqrt(xm[0] * xm[0] + xm[1] * xm[1]); + + if (!fL3Option && TMath::Abs(xm[2]) < 370. && r < 550.) { // - // Constant L3 field, if this option was selected + // Constant L3 field , if this option was selected // - b[2] = fSolenoidUser; + b[2] = (- fSolenoid)*fFactor; return; - } + } } else if (fFieldMap[1]->Inside(xm[0], xm[1], xm[2])) { map = fFieldMap[1]; } else if (fFieldMap[2]->Inside(xm[0], xm[1], xm[2])) { @@ -259,12 +247,12 @@ void AliMagFMaps::Field(Float_t *x, Float_t *b) } //_______________________________________________________________________ -void AliMagFMaps::Copy(AliMagFMaps & /* magf */) const +void AliMagFMaps::Copy(TObject & /* magf */) const { // // Copy *this onto magf -- Not implemented // - Fatal("Copy","Not implemented!\n"); + AliFatal("Not implemented!"); } //_______________________________________________________________________ @@ -272,9 +260,11 @@ void AliMagFMaps::Streamer(TBuffer &R__b) { // Stream an object of class AliMagFMaps. if (R__b.IsReading()) { - AliMagFMaps::Class()->ReadBuffer(R__b, this); - fFieldRead = 0; + R__b.ReadClassBuffer(AliMagFMaps::Class(), this); + // + fReadField = kTRUE; + ReadField(); } else { - AliMagFMaps::Class()->WriteBuffer(R__b, this); + R__b.WriteClassBuffer(AliMagFMaps::Class(), this); } }