ROOT logo
// macro to create and store in the OADB the root file containing the refractive index
// values to be used for nSigmas and probabiltiy calculation in the PID framework
// HmpParams: the refractive index is "manually" assigned . One for each chamber, constant vs y.
// HmpParamsFromOCDB: the refracitve index is calulated starting from the parameters stored in OCDB. One for each radiator, not constant vs y. 
// Contact: giacomo.volpe@cern.ch

HmpParams(Int_t runFirst, Int_t runLast)
{
  Double_t sizePcY = 48.*0.84;
    
  TObjArray *arrayDef = new TObjArray(7);
  TObjArray *array    = new TObjArray(7);
  
  TF1 *f1[7], *fIdx[7];
  
  for(Int_t iCh=0; iCh<7; iCh++){
    
    f1[iCh] = new TF1(Form("f1_%i",iCh),"1.284",0,3.*sizePcY);
    arrayDef->AddAt(f1[iCh],iCh);
    
    fIdx[iCh] = new TF1(Form("fIdx_ch%i",iCh),"1.290",0,3.*sizePcY);
       
    array->AddAt(fIdx[iCh],iCh);
  }  
    
  AliOADBContainer* con = new AliOADBContainer("HMPoadb");

  AliHMPIDPIDParams *pPar = new AliHMPIDPIDParams("HMPparams");
  pPar->SetHMPIDrefIndex(array);
  Printf("Populating HMPID OADB for period **");
  con->AppendObject(pPar,runFirst,runLast);
  
  AliHMPIDPIDParams *pParDefault = new AliHMPIDPIDParams("HMPparams");
  pParDefault->SetHMPIDrefIndex(arrayDef);
//  Printf("Populating HMPID OADB with default entry",period.Data());
  Printf("Populating HMPID OADB with default entry");
  con->AddDefaultObject(pParDefault);
      
  con->WriteToFile("HMPIDPIDParams.root");
}
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
HmpParamsFromOCDB( Int_t year, Int_t runNumber, Int_t runFirst, Int_t runLast)
{
  Double_t sizePcY = 48.*0.84;
    
  TGrid::Connect("alien://");
  
  AliCDBManager *man = AliCDBManager::Instance();
  
  man->SetDefaultStorage(Form("alien://folder=/alice/data/%i/OCDB",year));
  
  man->SetRun(runNumber);
      
  AliCDBEntry *entry = man->Get("HMPID/Calib/Nmean");
    
  TObjArray *arr = (TObjArray*)entry->GetObject();
     
  TF1 *fEmean = (TF1*)arr->At(42);
  
  TObjArray *arrayDef = new TObjArray(21);
  TObjArray *array    = new TObjArray(21);
  
  TF1 *f1[21], *fIdx[21];
  
  for(Int_t iCh=0; iCh<7; iCh++){
    
    for(Int_t iRad=0; iRad<3; iRad++){
    
       f1[3*iCh+iRad] = new TF1(Form("f1_%i_%i",iCh,iRad),"1.290",iRad*sizePcY,(iRad+1)*sizePcY);
       arrayDef->AddAt(f1[3*iCh+iRad],3*iCh+iRad);
    
       TF1 *fIn    = (TF1*)arr->At(6*iCh+2*iRad);
       TF1 *fOut   = (TF1*)arr->At(6*iCh+2*iRad+1);
     
       Double_t xmin, xmax;
     
       fIn->GetRange(xmin,xmax);
     
       Double_t tempIn  = fIn->Eval(0.5*(xmax+xmin));
       Double_t tempOut = fOut->Eval(0.5*(xmax+xmin));
    
       Double_t emean = fEmean->Eval(0.5*(xmax+xmin));  
       
       Double_t idxIn  = AliHMPIDParam::NIdxRad(emean,tempIn);
       Double_t idxOut = AliHMPIDParam::NIdxRad(emean,tempOut);
        
       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));
     
       if(tempOut<tempIn) tempOut = tempIn;
       
       Double_t gradT = (tempOut - tempIn)/sizePcY;
       
       TF1 *fTemp = new TF1(Form("Temp_%i_%i",iCh,iRad),Form("%f*x + %f",gradT,tempIn),iRad*sizePcY,(iRad+1)*sizePcY);
       
      // 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);
       fIdx[3*iCh+iRad] = new TF1(Form("fIdx_ch%i_rad%i",iCh,iRad),"1.290",iRad*sizePcY,(iRad+1)*sizePcY);
       
       array->AddAt(fIdx[3*iCh+iRad],3*iCh+iRad);
    }
    
  }  
    
  //TString period = "LHC10b";
  //Int_t startTime;

  AliOADBContainer* con = new AliOADBContainer("HMPoadb");

  AliHMPIDPIDParams *pPar = new AliHMPIDPIDParams("HMPparams");
  pPar->SetHMPIDrefIndex(array);
  Printf("Populating HMPID OADB for period **");
  con->AppendObject(pPar,runFirst,runLast);
  
  AliHMPIDPIDParams *pParDefault = new AliHMPIDPIDParams("HMPparams");
  pParDefault->SetHMPIDrefIndex(arrayDef);
//  Printf("Populating HMPID OADB with default entry",period.Data());
  Printf("Populating HMPID OADB with default entry");
  con->AddDefaultObject(pParDefault);
      
  con->WriteToFile("HMPIDPIDParams.root");
}
 HmpOADBParams.C:1
 HmpOADBParams.C:2
 HmpOADBParams.C:3
 HmpOADBParams.C:4
 HmpOADBParams.C:5
 HmpOADBParams.C:6
 HmpOADBParams.C:7
 HmpOADBParams.C:8
 HmpOADBParams.C:9
 HmpOADBParams.C:10
 HmpOADBParams.C:11
 HmpOADBParams.C:12
 HmpOADBParams.C:13
 HmpOADBParams.C:14
 HmpOADBParams.C:15
 HmpOADBParams.C:16
 HmpOADBParams.C:17
 HmpOADBParams.C:18
 HmpOADBParams.C:19
 HmpOADBParams.C:20
 HmpOADBParams.C:21
 HmpOADBParams.C:22
 HmpOADBParams.C:23
 HmpOADBParams.C:24
 HmpOADBParams.C:25
 HmpOADBParams.C:26
 HmpOADBParams.C:27
 HmpOADBParams.C:28
 HmpOADBParams.C:29
 HmpOADBParams.C:30
 HmpOADBParams.C:31
 HmpOADBParams.C:32
 HmpOADBParams.C:33
 HmpOADBParams.C:34
 HmpOADBParams.C:35
 HmpOADBParams.C:36
 HmpOADBParams.C:37
 HmpOADBParams.C:38
 HmpOADBParams.C:39
 HmpOADBParams.C:40
 HmpOADBParams.C:41
 HmpOADBParams.C:42
 HmpOADBParams.C:43
 HmpOADBParams.C:44
 HmpOADBParams.C:45
 HmpOADBParams.C:46
 HmpOADBParams.C:47
 HmpOADBParams.C:48
 HmpOADBParams.C:49
 HmpOADBParams.C:50
 HmpOADBParams.C:51
 HmpOADBParams.C:52
 HmpOADBParams.C:53
 HmpOADBParams.C:54
 HmpOADBParams.C:55
 HmpOADBParams.C:56
 HmpOADBParams.C:57
 HmpOADBParams.C:58
 HmpOADBParams.C:59
 HmpOADBParams.C:60
 HmpOADBParams.C:61
 HmpOADBParams.C:62
 HmpOADBParams.C:63
 HmpOADBParams.C:64
 HmpOADBParams.C:65
 HmpOADBParams.C:66
 HmpOADBParams.C:67
 HmpOADBParams.C:68
 HmpOADBParams.C:69
 HmpOADBParams.C:70
 HmpOADBParams.C:71
 HmpOADBParams.C:72
 HmpOADBParams.C:73
 HmpOADBParams.C:74
 HmpOADBParams.C:75
 HmpOADBParams.C:76
 HmpOADBParams.C:77
 HmpOADBParams.C:78
 HmpOADBParams.C:79
 HmpOADBParams.C:80
 HmpOADBParams.C:81
 HmpOADBParams.C:82
 HmpOADBParams.C:83
 HmpOADBParams.C:84
 HmpOADBParams.C:85
 HmpOADBParams.C:86
 HmpOADBParams.C:87
 HmpOADBParams.C:88
 HmpOADBParams.C:89
 HmpOADBParams.C:90
 HmpOADBParams.C:91
 HmpOADBParams.C:92
 HmpOADBParams.C:93
 HmpOADBParams.C:94
 HmpOADBParams.C:95
 HmpOADBParams.C:96
 HmpOADBParams.C:97
 HmpOADBParams.C:98
 HmpOADBParams.C:99
 HmpOADBParams.C:100
 HmpOADBParams.C:101
 HmpOADBParams.C:102
 HmpOADBParams.C:103
 HmpOADBParams.C:104
 HmpOADBParams.C:105
 HmpOADBParams.C:106
 HmpOADBParams.C:107
 HmpOADBParams.C:108
 HmpOADBParams.C:109
 HmpOADBParams.C:110
 HmpOADBParams.C:111
 HmpOADBParams.C:112
 HmpOADBParams.C:113
 HmpOADBParams.C:114
 HmpOADBParams.C:115
 HmpOADBParams.C:116
 HmpOADBParams.C:117
 HmpOADBParams.C:118
 HmpOADBParams.C:119
 HmpOADBParams.C:120
 HmpOADBParams.C:121