// CreateInputFilesMap() creates a list of local files, that can be accessed by the shuttle
extern TBenchmark *gBenchmark;
-void TOFPreprocessor()
+void TOFPreprocessor(Char_t * RunType="PHYSICS")
{
- gSystem->Load("$ALICE/SHUTTLE/TestShuttle/libTestShuttle.so");
+ gSystem->Load("$ALICE_ROOT/SHUTTLE/TestShuttle/libTestShuttle.so");
+ AliLog::SetClassDebugLevel("AliTOFPreprocessor",2);
// initialize location of CDB
- AliTestShuttle::SetMainCDB("local://$ALICE_ROOT/SHUTTLE/TestShuttle/TestCDB");
- AliTestShuttle::SetMainRefStorage("local://$ALICE_ROOT/SHUTTLE/TestShuttle/TestReference");
+ AliTestShuttle::SetMainCDB("local://$ALICE_ROOT/OCDB/SHUTTLE/TestShuttle/TestCDB");
+ AliTestShuttle::SetMainRefStorage("local://$ALICE_ROOT/OCDB/SHUTTLE/TestShuttle/TestReference");
// create AliTestShuttle instance
- AliTestShuttle* shuttle = new AliTestShuttle(0, 0, 1000);
+ Int_t nrun = 104892;
+ AliTestShuttle* shuttle = new AliTestShuttle(nrun, 30, 980);
+ //setting run type to physiscs
+ shuttle->SetInputRunType(RunType);
+ shuttle->SetTimeCreated(20);
+ shuttle->SetDCSQueryOffset(20);
// Generation of "fake" input DCS data
TMap* dcsAliasMap = CreateDCSAliasMap();
shuttle->SetDCSInput(dcsAliasMap);
// processing files. for the time being, the files are local.
+ shuttle->AddInputFile(AliTestShuttle::kDAQ, "TOF", "HITS", "MON", "$ALICE_ROOT/TOF/ShuttleInput/Hits.root");
+ shuttle->AddInputFile(AliTestShuttle::kDAQ, "TOF", "CALIB", "MON", "$ALICE_ROOT/TOF/ShuttleInput/Calib.root");
+ shuttle->AddInputFile(AliTestShuttle::kDAQ, "TOF", "READOUT", "MON", "$ALICE_ROOT/TOF/ShuttleInput/Readout.root");
shuttle->AddInputFile(AliTestShuttle::kDAQ, "TOF", "DELAYS", "MON", "$ALICE_ROOT/TOF/ShuttleInput/Total.root");
shuttle->AddInputFile(AliTestShuttle::kDAQ, "TOF", "RUNLevel", "MON", "$ALICE_ROOT/TOF/ShuttleInput/Partial.root");
+ shuttle->AddInputFile(AliTestShuttle::kDCS, "TOF", "TofFeeLightMap", "", "$ALICE_ROOT/TOF/ShuttleInput/TOFFEElight.20101028.133932.8000");
+ shuttle->AddInputFile(AliTestShuttle::kDCS, "TOF", "TofFeeMap", "", "$ALICE_ROOT/TOF/ShuttleInput/TOFFEE.20091217.194708.105517");
+
+ TString filename;
+ TString LDCname;
+ //char filename[100];
+ //char LDCname[5];
+
+ for (Int_t iLDC=0;iLDC<2;iLDC++){
+ filename.Form("$ALICE_ROOT/TOF/ShuttleInput/TOFoutPulserLDC_%02i.root",iLDC*2);
+ LDCname.Form("LDC%i",iLDC*2);
+ shuttle->AddInputFile(AliTestShuttle::kDAQ, "TOF", "PULSER", LDCname, filename);
+ filename.Form("$ALICE_ROOT/TOF/ShuttleInput/TOFoutNoiseLDC_%02i.root",iLDC*2);
+ LDCname.Form("LDC%i",iLDC*2);
+ shuttle->AddInputFile(AliTestShuttle::kDAQ, "TOF", "NOISE", LDCname, filename);
+ }
+
// instantiation of the preprocessor
AliPreprocessor* pp = new AliTOFPreprocessor(shuttle);
gBenchmark->Stop("process");
gBenchmark->Print("process");
- // checking the file which should have been created
- AliCDBEntry* chkEntry = AliCDBManager::Instance()->GetStorage(AliShuttleInterface::GetMainCDB())
- ->Get("TOF/Calib/OnlineDelay", 0);
- if (!chkEntry)
- {
- printf("The file is not there. Something went wrong.\n");
- return;
- }
-
- AliTOFDataDCS* output = dynamic_cast<AliTOFDataDCS*> (chkEntry->GetObject());
- // If everything went fine, draw the result
- if (output)
- printf("Output found.\n");
- // output->Draw();
}
+
TMap* CreateDCSAliasMap()
{
// Creates a DCS structure
aliasMap->SetOwner(1);
TRandom random;
+ /*
TDatime *datime = new TDatime();
Int_t time = datime->GetTime();
Int_t date = datime->GetDate();
Int_t pid = gSystem->GetPid();
delete datime;
Int_t iseed = TMath::Abs(10000 * pid + time - date);
+ */
+
- //Float_t thrHVv=7.75, thrHVc=3, thrLVv=2.75, thrLVc=2.5,
- //thrFEEthr=1.5, thrFEEt=10, thrTemp=35, thrPress=1000;
- //Float_t tentHVv=6.75, tentHVc=2, tentLVv=1.75, tentLVc=1.5,
- // tentFEEthr=0.5, te result=0;
- //ntFEEt=20, tentTemp=25, tentPress=900;
- //Float_t sigmaHVv=1, sigmaHVc=0.25, sigmaLVv=0.25, sigmaLVc=0.25,
- // sigmaFEEthr=0.05, sigmaFEEt=5, sigmaTemp=1, sigmaPress=10;
-
- Float_t tentHVv=6500, tentHVi=80, tentLVv=2.7, tentLVi=4.5,
- tentLVv33=3.3, tentLVv50=5.0, tentLVv48=48,
- tentLVi33=100, tentLVi50=3.0, tentLVi48=10,
- tentFEEthr=1.0, tentFEEtfeac=25, tentFEEttrm=45;
- Float_t sigmaHVv=10, sigmaHVi=10, sigmaLVv=0.2, sigmaLVi=1.0,
- sigmaLVv33=0.1, sigmaLVv50=0.1, sigmaLVv48=1,
- sigmaLVi33=10, sigmaLVi50=0.5, sigmaLVi48=2,
- sigmaFEEthr=0.1, sigmaFEEtfeac=10, sigmaFEEttrm=4;
-
- Float_t tent=0, sigma=0, thr=0;
- Int_t NAliases=10514, NHV=90, NLV=576, NLV33=72, NLV50=72, NLV48=72, NFEEthr=1152, NFEEtfeac=576, NFEEttrm=6840, NT=1, NP=1;
+ Float_t tentHVv=6500, tentHVi=80;
+ Float_t sigmaHVv=10, sigmaHVi=10;
+
+ Float_t tent=0, sigma=0;//, thr=0;
+ // to have all the aliases, decomment the following line:
+ Int_t NAliases=360, NHV=90;
+
+
+ // if not all the aliases are there, use this:
+ //Int_t NAliases=120, NHV=90;
+
+ TString sindex;
+ TString aliasName;
for(int nAlias=0;nAlias<NAliases;nAlias++) {
TObjArray* valueSet = new TObjArray;
valueSet->SetOwner(1);
- TString sindex;
- TString aliasName;
if (nAlias<NHV){
aliasName = "tof_hv_vp_";
sindex.Form("%02i",nAlias);
sigma=-sigmaHVi;
//thr=-thrHVc;
}
- else if (nAlias<NHV*4+NLV){
- // aliasName = "LVv";
- //aliasName += nAlias-4*NHV;
- aliasName = "tof_lv_vfea_";
- sindex.Form("%03i",nAlias-4*NHV);
- aliasName += sindex;
- tent=tentLVv;
- sigma=sigmaLVv;
- //thr=thrLVv;
- }
- else if (nAlias<NHV*4+2*NLV){
- // aliasName = "LVc";
- //aliasName += nAlias-(4*NHV+NLV);
- aliasName = "tof_lv_ifea_";
- sindex.Form("%03i",nAlias-(4*NHV+NLV));
- aliasName += sindex;
- tent=tentLVi;
- sigma=sigmaLVi;
- //thr=thrLVc;
- }
- else if (nAlias<NHV*4+2*NLV+NLV33){
- // aliasName = "LVc";
- //aliasName += nAlias-(4*NHV+NLV);
- aliasName = "tof_lv_v33_";
- sindex.Form("%02i",nAlias-(4*NHV+2*NLV));
- aliasName += sindex;
- tent=tentLVv33;
- sigma=sigmaLVv33;
- //thr=thrLVc;
- }
- else if (nAlias<NHV*4+2*NLV+2*NLV33){
- // aliasName = "LVc";
- //aliasName += nAlias-(4*NHV+NLV);
- aliasName = "tof_lv_i33_";
- sindex.Form("%02i",nAlias-(4*NHV+2*NLV+NLV33));
- aliasName += sindex;
- tent=tentLVi33;
- sigma=sigmaLVi33;
- //thr=thrLVc;
- }
- else if (nAlias<NHV*4+2*NLV+2*NLV33+NLV50){
- // aliasName = "LVc";
- //aliasName += nAlias-(4*NHV+NLV);
- aliasName = "tof_lv_v50_";
- sindex.Form("%02i",nAlias-(4*NHV+2*NLV+2*NLV33));
- aliasName += sindex;
- tent=tentLVv50;
- sigma=sigmaLVv50;
- //thr=thrLVc;
+ // gauss generation of values
+ for (int timeStamp=0;timeStamp<6000;timeStamp+=10){
+ //for (int timeStamp=0;timeStamp<1;timeStamp++){
+ Float_t gaussvalue = (Float_t) (random.Gaus(tent,sigma));
+ if (TMath::Abs(gaussvalue-tent)>sigma){
+ AliDCSValue* dcsVal = new AliDCSValue(gaussvalue, timeStamp);
+ valueSet->Add(dcsVal);
+ }
}
- else if (nAlias<NHV*4+2*NLV+2*NLV33+2*NLV50){
- // aliasName = "LVc";
- //aliasName += nAlias-(4*NHV+NLV);
- aliasName = "tof_lv_i50_";
- sindex.Form("%02i",nAlias-(4*NHV+2*NLV+2*NLV33+NLV50));
+
+ aliasMap->Add(new TObjString(aliasName), valueSet);
+
+ }
+
+
+
+
+ const Int_t kNsectors = 18;
+ const Int_t kNplates = 5;
+
+ UInt_t baseWord = 0;
+ UInt_t oldBaseWord = 0;
+
+ for(int i=0;i<kNsectors;i++)
+ for(int j=0;j<kNplates;j++) {
+
+ TObjArray* valueSetHV = new TObjArray;
+ valueSetHV->SetOwner(1);
+
+ aliasName = "TOF_HVSTATUS_";
+ sindex.Form("SM%02dMOD%1d",i,j);
aliasName += sindex;
- tent=tentLVi50;
- sigma=sigmaLVi50;
- //thr=thrLVc;
+
+
+ //for (int timeStamp=0;timeStamp<6000;timeStamp+=600) {
+ for (int timeStamp=0;timeStamp<1201;timeStamp+=600) {
+ if (timeStamp==0 /*|| timeStamp==1200*/) {
+ baseWord = CreateHVword(i,j, kTRUE);
+ oldBaseWord = baseWord;
+ AliDCSValue* dcsVal = new AliDCSValue(baseWord, timeStamp);
+ valueSetHV->Add(dcsVal);
+ }
+ else {
+ if (random.Uniform(0.,1.)>=0.5) {
+ baseWord = CreateHVword(i,j, kFALSE);
+ if (baseWord<=oldBaseWord) {
+ oldBaseWord = baseWord;
+ AliDCSValue* dcsVal = new AliDCSValue(baseWord, timeStamp);
+ valueSetHV->Add(dcsVal);
+ }
+ else {
+ AliDCSValue* dcsVal = new AliDCSValue(oldBaseWord, timeStamp);
+ valueSetHV->Add(dcsVal);
+ }
+ //Info(Form(" %2d %1d %s %d %d",i,j,aliasName,timeStamp,baseWord));
+ }
+ }
+ }
+
+ /*
+ baseWord = CreateHVword(i,j, kTRUE);
+ AliDCSValue* dcsVal0 = new AliDCSValue(baseWord, 0);
+ valueSetHV->Add(dcsVal0);
+
+ if ((i==0 && j==2) || (i==9 && j==4)) {
+ baseWord = CreateHVword(i,j, kFALSE);
+ AliDCSValue* dcsVal1 = new AliDCSValue(baseWord, 600);
+ valueSetHV->Add(dcsVal1);
+ }
+
+ baseWord = CreateHVword(i,j, kTRUE);
+ AliDCSValue* dcsVal2 = new AliDCSValue(baseWord, 1200);
+ valueSetHV->Add(dcsVal2);
+ */
+
+ aliasMap->Add(new TObjString(aliasName), valueSetHV);
+
}
- else if (nAlias<NHV*4+2*NLV+2*NLV33+2*NLV50+NLV48){
- // aliasName = "LVc";
- //aliasName += nAlias-(4*NHV+NLV);
- aliasName = "tof_lv_v48_";
- sindex.Form("%02i",nAlias-(4*NHV+2*NLV+2*NLV33+2*NLV50));
- aliasName += sindex;
- tent=tentLVv48;
- sigma=sigmaLVv48;
- //thr=thrLVc;
+
+
+ const Int_t kNddl = 72;
+ baseWord = 0;
+ oldBaseWord = 0;
+
+ for(int i=0;i<kNddl;i++) {
+
+ TObjArray* valueSetLV = new TObjArray;
+ valueSetLV->SetOwner(1);
+
+ aliasName = "TOF_FEACSTATUS_";
+ sindex.Form("%02d",i);
+ aliasName += sindex;
+
+
+ //for (int timeStamp=0;timeStamp<6000;timeStamp+=600) {
+ for (int timeStamp=0;timeStamp<1201;timeStamp+=400) {
+ if (timeStamp==0 /*|| timeStamp==1200*/) {
+ baseWord = CreateLVword(kTRUE);
+ AliDCSValue* dcsVal = new AliDCSValue(baseWord, timeStamp);
+ valueSetLV->Add(dcsVal);
+ oldBaseWord = baseWord;
+ //Info(Form(" %2d %s %d %d",i,aliasName,timeStamp,baseWord));
+ }
+ else {
+ if (random.Uniform(0.,1.)>=0.5) {
+ baseWord = CreateLVword(kFALSE);
+ if (baseWord<=oldBaseWord) {
+ oldBaseWord = baseWord;
+ AliDCSValue* dcsVal = new AliDCSValue(baseWord, timeStamp);
+ valueSetLV->Add(dcsVal);
+ }
+ else {
+ AliDCSValue* dcsVal = new AliDCSValue(oldBaseWord, timeStamp);
+ valueSetLV->Add(dcsVal);
+ }
+ //Info(Form(" %2d %1d %s %d %d",i,j,aliasName,timeStamp,baseWord));
+ }
+ }
}
- else if (nAlias<NHV*4+2*NLV+2*NLV33+2*NLV50+2*NLV48){
- // aliasName = "LVc";
- //aliasName += nAlias-(4*NHV+NLV);
- aliasName = "tof_lv_i48_";
- sindex.Form("%02i",nAlias-(4*NHV+2*NLV+2*NLV33+2*NLV50+NLV48));
- aliasName += sindex;
- tent=tentLVi48;
- sigma=sigmaLVi48;
- //thr=thrLVc;
+
+ /*
+ baseWord = CreateLVword(kTRUE);
+ AliDCSValue* dcsVal0 = new AliDCSValue(baseWord, 0);
+ valueSetLV->Add(dcsVal0);
+
+ if (i==7 || i==9) {
+ baseWord = CreateLVword(kFALSE);
+ AliDCSValue* dcsVal1 = new AliDCSValue(baseWord, 400);
+ valueSetLV->Add(dcsVal1);
}
- else if (nAlias<NHV*4+2*NLV+2*NLV33+2*NLV50+2*NLV48+NFEEthr){
- // aliasName = "FEEthr";
- //aliasName += nAlias-(4*NHV+2*NLV-(4*NHV+2*NLV+2*NLV33+2*NLV50+2*NLV48));
- aliasName = "tof_fee_th_";
- sindex.Form("%04i",nAlias-(4*NHV+2*NLV+2*NLV33+2*NLV50+2*NLV48));
- aliasName += sindex;
- tent=tentFEEthr;
- sigma=sigmaFEEthr;
- //thr=thrFEEthr;
+ else if (i==50 || i==35) {
+ baseWord = CreateLVword(kFALSE);
+ AliDCSValue* dcsVal2 = new AliDCSValue(baseWord, 800);
+ valueSetLV->Add(dcsVal2);
}
- else if (nAlias<NHV*4+2*NLV+2*NLV33+2*NLV50+2*NLV48+NFEEthr+NFEEtfeac){
- //cout << " nalias fee temp = " << nAlias << endl;
- // aliasName = "FEEt";
- //aliasName += nAlias-(4*NHV+2*NLV+NFEEthr);
- aliasName = "tof_fee_tfeac_";
- sindex.Form("%03i",nAlias-(4*NHV+2*NLV+2*NLV33+2*NLV50+2*NLV48+NFEEthr));
- aliasName += sindex;
- //cout << " nalias fee temp name = " << aliasName << endl;
- tent=tentFEEtfeac;
- sigma=sigmaFEEtfeac;
- //thr=thrFEEthr;
+
+ baseWord = CreateLVword(kTRUE);
+ AliDCSValue* dcsVal3 = new AliDCSValue(baseWord, 1200);
+ valueSetLV->Add(dcsVal3);
+ */
+
+ aliasMap->Add(new TObjString(aliasName), valueSetLV);
+
+ }
+
+
+ return aliasMap;
+}
+
+
+UInt_t CreateHVword(Int_t nSector, Int_t nPlate, Bool_t isAtBorder) {
+ //
+ //
+ //
+
+ UInt_t baseWord = 0;
+ UInt_t word = 0;
+ TRandom random;
+
+ for (Int_t iStrip=0; iStrip<AliTOFGeometry::NStrip(nPlate); iStrip++) {
+
+ if (isAtBorder) {
+ word = 1;
+ if (nPlate==2 && nSector>=13 && nSector<=15)
+ word = 0;
}
- else if (nAlias<NHV*4+2*NLV+2*NLV33+2*NLV50+2*NLV48+NFEEthr+NFEEtfeac+NFEEttrm){
- //cout << " nalias fee temp = " << nAlias << endl;
- // aliasName = "FEEt";
- //aliasName += nAlias-(4*NHV+2*NLV+NFEEthr);
- aliasName = "tof_fee_ttrm_";
- sindex.Form("%04i",nAlias-(4*NHV+2*NLV+2*NLV33+2*NLV50+2*NLV48+NFEEthr+NFEEtfeac));
- aliasName += sindex;
- //cout << " nalias fee temp name = " << aliasName << endl;
- tent=tentFEEttrm;
- sigma=sigmaFEEttrm;
- //thr=thrFEEthr;
+ else {
+ random.Uniform(0.,1.)<0.5 ? word = 0 : word = 1;
+ if (nPlate==2 && nSector>=13 && nSector<=15)
+ word = 0;
+ word = 0;
}
- // gauss generation of values
- for (int timeStamp=0;timeStamp<1000;timeStamp+=10){
- Float_t gaussvalue = (Float_t) (random.Gaus(tent,sigma));
- if (TMath::Abs(gaussvalue-tent)>sigma){
- AliDCSValue* dcsVal = new AliDCSValue(gaussvalue, timeStamp);
- valueSet->Add(dcsVal);
- }
+ AliBitPacking::PackWord(word,baseWord,iStrip,iStrip);
+ }
+
+ return baseWord;
+
+}
+
+
+UInt_t CreateLVword(Bool_t isAtBorder) {
+ //
+ //
+ //
+
+ UInt_t baseWord = 0;
+ UInt_t word = 0;
+ TRandom random;
+
+ for (Int_t iFeac=0; iFeac<8; iFeac++) {
+
+ if (isAtBorder)
+ word = 1;
+ else {
+ random.Uniform(0.,1.)<0.5 ? word = 0 : word = 1;
+ word = 0;
}
- aliasMap->Add(new TObjString(aliasName), valueSet);
+ AliBitPacking::PackWord(word,baseWord,iFeac,iFeac);
}
- return aliasMap;
+ return baseWord;
+
}
+
TMap* ReadDCSAliasMap()
{
// Open a file that contains DCS input data
AliCDBId id("TOF/DCS/Data", 0, 0);
// initialize location of CDB
- AliCDBManager::Instance()->SetDefaultStorage("local://$ALICE_ROOT/SHUTTLE/TestShuttle/TestCDB");
+ AliCDBManager::Instance()->SetDefaultStorage("local://$ALICE_ROOT/OCDB/SHUTTLE/TestShuttle/TestCDB");
AliCDBManager::Instance()->Put(dcsAliasMap, id, &metaData);
}
+
+