]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGPP/CalibMacros/CPass1/ConfigCalibTrain.C
1. Renaming Pass0 --> CPass0
[u/mrichter/AliRoot.git] / PWGPP / CalibMacros / CPass1 / ConfigCalibTrain.C
CommitLineData
27eb9bff 1//
2// Macro to initialize:
3// - the OCDB (run number required as input argument)
4// - the geometry (expected to be in the current directory)
5// to run the Calibration train.
6//
7
8void ConfigCalibTrain(Int_t run, const char *ocdb="raw://"){
9
10 // OCDB
11
12 printf("setting run to %d\n",run);
13 AliCDBManager::Instance()->SetDefaultStorage(ocdb);
14 AliCDBManager::Instance()->SetRun(run);
15
16 // geometry
17 AliGeomManager::LoadGeometry();
18 AliGeomManager::ApplyAlignObjsFromCDB("GRP ITS TPC");
19
20
21
22 AliCDBEntry *entry = AliCDBManager::Instance()->Get("GRP/GRP/Data");
23 AliGRPObject* grpData = (AliGRPObject*)entry->GetObject();
24
25 Bool_t ok=kTRUE;
26 Float_t l3Current = grpData->GetL3Current((AliGRPObject::Stats)0);
27 if (l3Current == AliGRPObject::GetInvalidFloat()) {
28 printf("GRP/GRP/Data entry: missing value for the L3 current !");
29 ok = kFALSE;
30 }
31
32 Char_t l3Polarity = grpData->GetL3Polarity();
33 if (l3Polarity == AliGRPObject::GetInvalidChar()) {
34 printf("GRP/GRP/Data entry: missing value for the L3 polarity !");
35 ok = kFALSE;
36 }
37
38 // Dipole
39 Float_t diCurrent = grpData->GetDipoleCurrent((AliGRPObject::Stats)0);
40 if (diCurrent == AliGRPObject::GetInvalidFloat()) {
41 printf("GRP/GRP/Data entry: missing value for the dipole current !");
42 ok = kFALSE;
43 }
44
45 Char_t diPolarity = grpData->GetDipolePolarity();
46 if (diPolarity == AliGRPObject::GetInvalidChar()) {
47 printf("GRP/GRP/Data entry: missing value for the dipole polarity !");
48 ok = kFALSE;
49 }
50
51 TString beamType = grpData->GetBeamType();
52 if (beamType==AliGRPObject::GetInvalidString()) {
53 printf("GRP/GRP/Data entry: missing value for the beam type ! Using UNKNOWN");
54 beamType = "UNKNOWN";
55 }
56
57 Float_t beamEnergy = grpData->GetBeamEnergy();
58 if (beamEnergy==AliGRPObject::GetInvalidFloat()) {
59 printf("GRP/GRP/Data entry: missing value for the beam energy ! Using 0");
60 beamEnergy = 0;
61 }
62
63 // read special bits for the polarity convention and map type
64 //Int_t polConvention = grpData->IsPolarityConventionLHC() ? AliMagF::kConvLHC : AliMagF::kConvDCS2008;
65 Int_t polConvention = grpData->IsPolarityConventionLHC() ? 0 : 1;
66 Bool_t uniformB = grpData->IsUniformBMap();
67
68 if (ok) {
69 AliMagF* fld = AliMagF::CreateFieldMap(TMath::Abs(l3Current) * (l3Polarity ? -1:1),
70 TMath::Abs(diCurrent) * (diPolarity ? -1:1),
71 polConvention,uniformB,beamEnergy, beamType.Data());
72 if (fld) {
73 TGeoGlobalMagField::Instance()->SetField( fld );
74 TGeoGlobalMagField::Instance()->Lock();
75 printf("Running with the B field constructed out of GRP !");
76 }
77 }
78 printf("Problem with magnetic field setup\n");
79}