1 // macro to create and store in the OADB the root file containing the refractive index
2 // values to be used for nSigmas and probabiltiy calculation in the PID framework
3 // HmpParams: the refractive index is "manually" assigned . One for each chamber, constant vs y.
4 // HmpParamsFromOCDB: the refracitve index is calulated starting from the parameters stored in OCDB. One for each radiator, not constant vs y.
5 // Contact: giacomo.volpe@cern.ch
7 HmpParams(Int_t runFirst, Int_t runLast)
9 Double_t sizePcY = 48.*0.84;
11 TObjArray *arrayDef = new TObjArray(7);
12 TObjArray *array = new TObjArray(7);
16 for(Int_t iCh=0; iCh<7; iCh++){
18 f1[iCh] = new TF1(Form("f1_%i",iCh),"1.284",0,3.*sizePcY);
19 arrayDef->AddAt(f1[iCh],iCh);
21 fIdx[iCh] = new TF1(Form("fIdx_ch%i",iCh),"1.290",0,3.*sizePcY);
23 array->AddAt(fIdx[iCh],iCh);
26 AliOADBContainer* con = new AliOADBContainer("HMPoadb");
28 AliHMPIDPIDParams *pPar = new AliHMPIDPIDParams("HMPparams");
29 pPar->SetHMPIDrefIndex(array);
30 Printf("Populating HMPID OADB for period **");
31 con->AppendObject(pPar,runFirst,runLast);
33 AliHMPIDPIDParams *pParDefault = new AliHMPIDPIDParams("HMPparams");
34 pParDefault->SetHMPIDrefIndex(arrayDef);
35 // Printf("Populating HMPID OADB with default entry",period.Data());
36 Printf("Populating HMPID OADB with default entry");
37 con->AddDefaultObject(pParDefault);
39 con->WriteToFile("HMPIDPIDParams.root");
41 //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
42 HmpParamsFromOCDB( Int_t year, Int_t runNumber, Int_t runFirst, Int_t runLast)
44 Double_t sizePcY = 48.*0.84;
46 TGrid::Connect("alien://");
48 AliCDBManager *man = AliCDBManager::Instance();
50 man->SetDefaultStorage(Form("alien://folder=/alice/data/%i/OCDB",year));
52 man->SetRun(runNumber);
54 AliCDBEntry *entry = man->Get("HMPID/Calib/Nmean");
56 TObjArray *arr = (TObjArray*)entry->GetObject();
58 TF1 *fEmean = (TF1*)arr->At(42);
60 TObjArray *arrayDef = new TObjArray(21);
61 TObjArray *array = new TObjArray(21);
63 TF1 *f1[21], *fIdx[21];
65 for(Int_t iCh=0; iCh<7; iCh++){
67 for(Int_t iRad=0; iRad<3; iRad++){
69 f1[3*iCh+iRad] = new TF1(Form("f1_%i_%i",iCh,iRad),"1.290",iRad*sizePcY,(iRad+1)*sizePcY);
70 arrayDef->AddAt(f1[3*iCh+iRad],3*iCh+iRad);
72 TF1 *fIn = (TF1*)arr->At(6*iCh+2*iRad);
73 TF1 *fOut = (TF1*)arr->At(6*iCh+2*iRad+1);
77 fIn->GetRange(xmin,xmax);
79 Double_t tempIn = fIn->Eval(0.5*(xmax+xmin));
80 Double_t tempOut = fOut->Eval(0.5*(xmax+xmin));
82 Double_t emean = fEmean->Eval(0.5*(xmax+xmin));
84 Double_t idxIn = AliHMPIDParam::NIdxRad(emean,tempIn);
85 Double_t idxOut = AliHMPIDParam::NIdxRad(emean,tempOut);
87 Printf("ch = %i, rad = %i,Tin = %f, Tout = %f, emean = %f, ----- Tin(xmin) = %f, Tin(xmax) = %f, Tout(xmin) = %f, Tout(xmax) = %f",iCh,iRad,tempIn,tempOut,emean,fIn->Eval(xmin),fIn->Eval(xmax),fOut->Eval(xmin),fOut->Eval(xmax));
89 if(tempOut<tempIn) tempOut = tempIn;
91 Double_t gradT = (tempOut - tempIn)/sizePcY;
93 TF1 *fTemp = new TF1(Form("Temp_%i_%i",iCh,iRad),Form("%f*x + %f",gradT,tempIn),iRad*sizePcY,(iRad+1)*sizePcY);
95 // fIdx[3*iCh+iRad] = new TF1(Form("fIdx_ch%i_rad%i",iCh,iRad),Form("sqrt(1+0.554*(1239.84/6.675)*(1239.84/6.675)/((1239.84/6.675)*(1239.84/6.675)-5769))-0.0005*(Temp_%i_%i-20)",iCh,iRad),iRad*sizePcY,(iRad+1)*sizePcY);
96 fIdx[3*iCh+iRad] = new TF1(Form("fIdx_ch%i_rad%i",iCh,iRad),"1.290",iRad*sizePcY,(iRad+1)*sizePcY);
98 array->AddAt(fIdx[3*iCh+iRad],3*iCh+iRad);
103 //TString period = "LHC10b";
106 AliOADBContainer* con = new AliOADBContainer("HMPoadb");
108 AliHMPIDPIDParams *pPar = new AliHMPIDPIDParams("HMPparams");
109 pPar->SetHMPIDrefIndex(array);
110 Printf("Populating HMPID OADB for period **");
111 con->AppendObject(pPar,runFirst,runLast);
113 AliHMPIDPIDParams *pParDefault = new AliHMPIDPIDParams("HMPparams");
114 pParDefault->SetHMPIDrefIndex(arrayDef);
115 // Printf("Populating HMPID OADB with default entry",period.Data());
116 Printf("Populating HMPID OADB with default entry");
117 con->AddDefaultObject(pParDefault);
119 con->WriteToFile("HMPIDPIDParams.root");