]>
Commit | Line | Data |
---|---|---|
abb5f786 | 1 | void Hshuttle(Int_t runTime=1500) |
43480497 | 2 | { |
3 | // this macro is to simulate the functionality of SHUTTLE. | |
abb5f786 | 4 | // Here the list of DCS aliases is created and packed in TMap of structure "alias name" - TObjArray of AliDCSValue; AliDCSValue is a pair value-time stamp |
5 | // currently simulated: freon temperature 2 per radiator (inlet,outlet) | |
6 | // methane pressure 1 per chamber | |
7 | gSystem->Load("libTestShuttle.so"); | |
8 | ||
9 | AliTestShuttle::SetMainCDB(TString("local://$HOME")); | |
10 | ||
43480497 | 11 | TMap *pDcsMap = new TMap; pDcsMap->SetOwner(1); //DCS archive map |
abb5f786 | 12 | |
13 | SimMap(pDcsMap,runTime); | |
14 | TestShuttle(pDcsMap); | |
15 | TCanvas *c=new TCanvas("cc","ff",600,600); | |
16 | DrawInput(c,pDcsMap); | |
17 | DrawOutput(); | |
18 | }//Hshuttle() | |
19 | //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ | |
20 | void SimMap(TMap *pDcsMap,Int_t runTime=1500) | |
21 | { | |
22 | Int_t stepTime=100; //time interval between mesuraments | |
23 | Int_t startTime=0; | |
24 | ||
43480497 | 25 | |
26 | for(Int_t iCh=0;iCh<7;iCh++){//chambers loop | |
abb5f786 | 27 | TObjArray *pP=new TObjArray; pP->SetOwner(1); |
28 | TObjArray *pHV=new TObjArray; pHV->SetOwner(1); | |
29 | for(Int_t time=0;time<runTime;time+=stepTime) pP->Add(new AliDCSValue((Float_t)1005.0 ,time)); //sample CH4 pressure [mBar] | |
30 | pHV->Add(new AliDCSValue((Float_t)2010.0,time)); //sample chamber HV [V] | |
31 | ||
32 | pDcsMap->Add(new TObjString(Form(AliHMPIDPreprocessor::fP,iCh,iCh,iCh)),pP); | |
33 | pDcsMap->Add(new TObjString(Form(AliHMPIDPreprocessor::fHV,iCh,iCh,iCh)),pHV); | |
34 | ||
43480497 | 35 | for(Int_t iRad=0;iRad<3;iRad++){//radiators loop |
abb5f786 | 36 | TObjArray *pT1=new TObjArray; pT1->SetOwner(1); |
37 | TObjArray *pT2=new TObjArray; pT2->SetOwner(1); | |
38 | for (Int_t time=0;time<runTime;time+=stepTime) pT1->Add(new AliDCSValue(13,time)); //sample inlet temperature Nmean=1.292 @ 13 degrees | |
39 | for (Int_t time=0;time<runTime;time+=stepTime) pT2->Add(new AliDCSValue(13,time)); //sample outlet temperature | |
40 | pDcsMap->Add(new TObjString(Form(AliHMPIDPreprocessor::fT1,iCh,iCh,iRad)) ,pT1); | |
41 | pDcsMap->Add(new TObjString(Form(AliHMPIDPreprocessor::fT2,iCh,iCh,iRad)),pT2); | |
42 | }//radiators loop | |
43480497 | 43 | }//chambers loop |
abb5f786 | 44 | }//SimMap() |
45 | //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ | |
46 | void TestShuttle(TMap *pDcsMap) | |
47 | { | |
48 | AliTestShuttle* pShuttle = new AliTestShuttle(0,0,1000000); | |
43480497 | 49 | pShuttle->SetDCSInput(pDcsMap); //DCS map |
50 | AliPreprocessor* pp = new AliHMPIDPreprocessor(pShuttle); //actual ipreprocessor is created here | |
51 | pShuttle->Process(); //run SHUTTLE simulator | |
52 | delete pp; | |
abb5f786 | 53 | } |
54 | //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ | |
55 | void DrawInput(TCanvas *c,TMap *pDcsMap) | |
56 | { | |
57 | c->Divide(3,3); | |
43480497 | 58 | |
abb5f786 | 59 | AliDCSValue *pVal; Int_t cnt=0; |
60 | ||
61 | for(Int_t iCh=0;iCh<7;iCh++){//chambers loop | |
62 | if(iCh==6) c->cd(1); if(iCh==5) c->cd(2); | |
63 | if(iCh==4) c->cd(4); if(iCh==3) c->cd(5); if(iCh==2) c->cd(6); | |
64 | if(iCh==1) c->cd(8); if(iCh==0) c->cd(9); | |
65 | ||
66 | TObjArray *pHV=(TObjArray*)pDcsMap->GetValue(Form(AliHMPIDPreprocessor::fHV,iCh,iCh,iCh,iCh)); //HV | |
67 | TObjArray *pP =(TObjArray*)pDcsMap->GetValue(Form(AliHMPIDPreprocessor::fP,iCh,iCh,iCh)); //P | |
68 | TGraph *pGr=new TGraph; pGr->SetMarkerStyle(5); | |
43480497 | 69 | |
abb5f786 | 70 | TIter nextp(pP); cnt=0; while((pVal=(AliDCSValue*)nextp())){ pGr->SetPoint(cnt++,pVal->GetTimeStamp(),pVal->GetFloat());}//P |
43480497 | 71 | |
abb5f786 | 72 | |
73 | pGr->Draw("AP"); | |
43480497 | 74 | } |
abb5f786 | 75 | } |
76 | //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ | |
77 | void DrawOutput() | |
78 | { | |
79 | AliCDBManager::Instance()->SetDefaultStorage("local://$HOME"); | |
80 | AliCDBEntry *pQthreEnt=AliCDBManager::Instance()->Get("HMPID/Calib/Qthre",0); | |
81 | AliCDBEntry *pNmeanEnt=AliCDBManager::Instance()->Get("HMPID/Calib/Nmean",0); | |
82 | ||
83 | if(!pQthreEnt || ! pNmeanEnt) return; | |
84 | ||
85 | TObjArray *pNmean=(TObjArray*)pNmeanEnt->GetObject(); | |
86 | TObjArray *pQthre=(TObjArray*)pQthreEnt->GetObject(); | |
87 | ||
88 | TF1 *pRad0,*pRad1,*pRad2; | |
89 | TCanvas *c2=new TCanvas("c2","Nmean"); c2->Divide(3,3); | |
90 | ||
43480497 | 91 | |
43480497 | 92 | for(Int_t iCh=0;iCh<7;iCh++){//chambers loop |
abb5f786 | 93 | if(iCh==6) c2->cd(1); if(iCh==5) c2->cd(2); |
94 | if(iCh==4) c2->cd(4); if(iCh==3) c2->cd(5); if(iCh==2) c2->cd(6); | |
95 | if(iCh==1) c2->cd(8); if(iCh==0) c2->cd(9); | |
96 | ||
97 | TF1 *pRad0=(TF1*)pNmean->At(iCh*3+0); pRad0->Draw(); pRad0->GetXaxis()->SetTimeDisplay(kTRUE); pRad0->GetYaxis()->SetRangeUser(1.28,1.3); | |
98 | TF1 *pRad1=(TF1*)pNmean->At(iCh*3+1); pRad1->Draw("same"); | |
99 | TF1 *pRad2=(TF1*)pNmean->At(iCh*3+2); pRad2->Draw("same"); | |
100 | }//chambers loop | |
101 | } |