//____________________________________________________ void AliTRDmakeRecoParam() { AliCDBMetaData *metaData= new AliCDBMetaData(); metaData->SetObjectClassName("TObjArray"); metaData->SetResponsible("Alexandru Bercuci"); metaData->SetBeamPeriod(1); metaData->SetAliRootVersion("05-21-01"); //root version metaData->SetComment("Ideal reconstruction parameters for low, high and cosmic runs"); AliCDBId id("TRD/Calib/RecoParam", 0, AliCDBRunRange::Infinity()); AliCDBManager *man = AliCDBManager::Instance(); AliCDBStorage *gStorLoc = man->GetStorage("local://$ALICE_ROOT/OCDB"); if (!gStorLoc) { return; } gStorLoc->Put(CreateRecoParamObject(), id, metaData); return; }
void MakeMFTZeroMisAlignment(TString Storage = "alien://folder=/alice/cern.ch/user/a/auras/OCDB/") { // Create TClonesArray of zero misalignment objects for MFT const char* macroname = "MakeMFTZeroMisAlignment.C"; TClonesArray *array = new TClonesArray("AliAlignObjParams",10); TClonesArray &alobj = *array; Double_t dx=0, dy=0, dz=0, dpsi=0, dtheta=0, dphi=0; Int_t iIndex=0; AliGeomManager::ELayerID iLayer = AliGeomManager::kInvalidLayer; UShort_t volid = AliGeomManager::LayerToVolUID(iLayer,iIndex); TString MFT("MFT"); new (alobj[0]) AliAlignObjParams(MFT.Data(), volid, dx, dy, dz, dpsi, dtheta, dphi, kTRUE); // save in CDB storage if(!Storage.BeginsWith("local://") && !Storage.BeginsWith("alien://")) { Error(macroname,"STORAGE variable set to %s is not valid. Exiting\n",Storage.Data()); return; } Info(macroname,"Saving alignment objects in CDB storage %s", Storage.Data()); AliCDBManager* cdb = AliCDBManager::Instance(); AliCDBStorage* storage = cdb->GetStorage(Storage.Data()); if(!storage){ Error(macroname,"Unable to open storage %s\n",Storage.Data()); return; } AliCDBMetaData* md = new AliCDBMetaData(); md->SetResponsible("Antonio Uras"); md->SetComment("Alignment objects for MFT zero-misalignment"); md->SetAliRootVersion(gROOT->GetVersion()); AliCDBId id("MFT/Align/Data",0,AliCDBRunRange::Infinity()); storage->Put(array,id,md); array->Delete(); }
void MakeTRDResMisAlignment(){ // Create TClonesArray of residual misalignment objects for TRD // const char* macroname = "MakeTRDResMisAlignment.C"; TClonesArray *array = new TClonesArray("AliAlignObjParams",1000); TClonesArray &alobj = *array; // Activate CDB storage and load geometry from CDB AliCDBManager* cdb = AliCDBManager::Instance(); if(!cdb->IsDefaultStorageSet()) cdb->SetDefaultStorage("local://$ALICE_ROOT/OCDB"); cdb->SetRun(0); AliCDBStorage* storage; if( TString(gSystem->Getenv("TOCDB")) == TString("kTRUE") ){ TString Storage = gSystem->Getenv("STORAGE"); if(!Storage.BeginsWith("local://") && !Storage.BeginsWith("alien://")) { Error(macroname,"STORAGE variable set to %s is not valid. Exiting\n",Storage.Data()); return; } storage = cdb->GetStorage(Storage.Data()); if(!storage){ Error(macroname,"Unable to open storage %s\n",Storage.Data()); return; } AliCDBPath path("GRP","Geometry","Data"); AliCDBEntry *entry = storage->Get(path.GetPath(),cdb->GetRun()); if(!entry) Fatal(macroname,"Could not get the specified CDB entry!"); entry->SetOwner(0); TGeoManager* geom = (TGeoManager*) entry->GetObject(); AliGeomManager::SetGeometry(geom); } else { AliGeomManager::LoadGeometry(); //load geom from default CDB storage } // sigmas for the chambers Double_t chdx = 0.002; // 20 microns Double_t chdy = 0.003; // 30 microns Double_t chdz = 0.007; // 70 microns Double_t chrx = 0.0005 / 1000.0 / TMath::Pi()*180; // 0 mrad Double_t chry = 0.0005 / 1000.0 / TMath::Pi()*180; // 0 mrad Double_t chrz = 0.1 / 1000.0 / TMath::Pi()*180; // 0.1 mrad // Truncation for the chambers Double_t cutChdx = 3.0 * chdx; Double_t cutChdy = 3.0 * chdy; Double_t cutChdz = 0.14 * chdz; Int_t sActive[18]={1,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,1}; Double_t dx=0.,dy=0.,dz=0.,rx=0.,ry=0.,rz=0.; Int_t j=0; UShort_t volid; const char* symname; // create the supermodules' alignment objects for (Int_t iSect=0; iSect<18; iSect++) { TString sm_symname(Form("TRD/sm%02d",iSect)); if( (TString(gSystem->Getenv("REALSETUP")) == TString("kTRUE")) && !sActive[iSect] ) continue; new((*array)[j++]) AliAlignObjParams(sm_symname.Data(),0,dx,dy,dz,rx,ry,rz,kTRUE); } // create the chambers' alignment objects Int_t chId; for (Int_t iLayer = AliGeomManager::kTRD1; iLayer <= AliGeomManager::kTRD6; iLayer++) { chId=-1; for (Int_t iSect = 0; iSect < 18; iSect++){ for (Int_t iCh = 0; iCh < 5; iCh++) { dx = AliMathBase::TruncatedGaus(0.0,chdx,cutChdx); dy = AliMathBase::TruncatedGaus(0.0,chdy,cutChdy); dz = AliMathBase::TruncatedGaus(0.0,chdz,cutChdz); rx = gRandom->Rndm() * 2.0*chrx - chrx; ry = gRandom->Rndm() * 2.0*chry - chry; rz = gRandom->Rndm() * 2.0*chrz - chrz; chId++; if ((iSect==13 || iSect==14 || iSect==15) && iCh==2) continue; volid = AliGeomManager::LayerToVolUID(iLayer,chId); if( (TString(gSystem->Getenv("REALSETUP")) == TString("kTRUE")) && !sActive[iSect] ) continue; symname = AliGeomManager::SymName(volid); new(alobj[j++]) AliAlignObjParams(symname,volid,dx,dy,dz,rx,ry,rz,kFALSE); } } } if ( TString(gSystem->Getenv("TOCDB")) != TString("kTRUE") ) { // save on file const char* filename = "TRDresidualMisalignment.root"; TFile f(filename,"RECREATE"); if(!f){ Error(macroname,"cannot open file for output\n"); return; } Info(macroname,"Saving alignment objects to the file %s", filename); f.cd(); f.WriteObject(array,"TRDAlignObjs","kSingleKey"); f.Close(); } else { // save in CDB storage AliCDBMetaData* md = new AliCDBMetaData(); md->SetResponsible("Dariusz Miskowiec"); md->SetComment("Residual misalignment for TRD"); md->SetAliRootVersion(gSystem->Getenv("ARVERSION")); AliCDBId id("TRD/Align/Data",0,AliCDBRunRange::Infinity()); storage->Put(array,id,md); } array->Delete(); }
void MakeAllDETsFullMisAlignment(Char_t* CDBstorage = "local://$HOME/FullMisAlignment", Bool_t partialGeom=kFALSE){ // Make full misalignment objects for all detectors // Pass different "CDBstorage" argument if needed (e.g. to fill // conditions' data base on alien) or set it to null string to have // the objects saved locally on file // This macro defines the default name and place for the detector-macros // in charge of producing the full misalignment objects as // $ALICE_ROOT/DET/MakeDETFullMisAlignment.C // const char* macroname="MakeAllDETsFullMisAlignment.C"; TString strStorage(CDBstorage); if(strStorage.IsNull()){ gSystem->Setenv("TOCDB","kFALSE"); }else{ gSystem->Setenv("TOCDB","kTRUE"); gSystem->Setenv("STORAGE",strStorage.Data()); gSystem->Setenv("ARVERSION",ALIROOT_VERSION); } if(partialGeom){ gSystem->Setenv("REALSETUP","kTRUE"); }else{ gSystem->Setenv("REALSETUP","kFALSE"); } // Load geometry from CDB updating it if we are producing the // alignment objects for the CDB AliCDBManager* cdb = AliCDBManager::Instance(); if(!cdb->IsDefaultStorageSet()) cdb->SetDefaultStorage("local://$ALICE_ROOT/OCDB"); cdb->SetRun(0); if(strStorage.IsNull()){ //if we produce the objects into a file AliGeomManager::LoadGeometry(); //load geom from default CDB storage }else{ // if we produce the objects in a CDB storage // update geometry in it Info(macroname,"Updating geometry in CDB storage %s",strStorage.Data()); gROOT->ProcessLine(".L $ALICE_ROOT/GRP/UpdateCDBIdealGeom.C"); if(partialGeom){ UpdateCDBIdealGeom(strStorage.Data(),"$ALICE_ROOT/macros/Config_PDC06.C"); }else{ UpdateCDBIdealGeom(strStorage.Data(),"$ALICE_ROOT/macros/Config.C"); } // load the same geometry from given CDB storage AliCDBPath path("GRP","Geometry","Data"); AliCDBStorage* storage = cdb->GetStorage(strStorage.Data()); AliCDBEntry *entry = storage->Get(path.GetPath(),cdb->GetRun()); if(!entry) Fatal(macroname,"Couldn't load geometry data from CDB!"); entry->SetOwner(0); TGeoManager* geom = (TGeoManager*) entry->GetObject(); if (!geom) Fatal(macroname,"Couldn't find TGeoManager in the specified CDB entry!"); AliGeomManager::SetGeometry(geom); } // run macro for non-sensitive modules // (presently generates only FRAME alignment objects) gSystem->Exec("aliroot -b -q $ALICE_ROOT/GRP/MakeSTRUCTFullMisAlignment.C"); // run macros for sensitive modules TString sModules="ACORDE,EMCAL,FMD,HMPID,ITS,MUON,PMD,PHOS,T0,TRD,TPC,TOF,VZERO,ZDC"; TObjArray *detArray = sModules.Tokenize(','); TIter iter(detArray); TObjString *ostr; TString exec_det_macro; while((ostr = (TObjString*) iter.Next())){ TString str(ostr->String()); exec_det_macro="aliroot -b -q $ALICE_ROOT/"; exec_det_macro+=str; exec_det_macro+="/Make"; exec_det_macro+=str; exec_det_macro+="FullMisAlignment.C"; gSystem->Exec(exec_det_macro.Data()); } return; }
void MakeTRDFullMisAlignment(){ // Create TClonesArray of full misalignment objects for TRD // Expects to read objects for FRAME // TClonesArray *array = new TClonesArray("AliAlignObjParams",1000); const char* macroname = "MakeTRDFullMisAlignment.C"; // Activate CDB storage and load geometry from CDB AliCDBManager* cdb = AliCDBManager::Instance(); if(!cdb->IsDefaultStorageSet()) cdb->SetDefaultStorage("local://$ALICE_ROOT/OCDB"); cdb->SetRun(0); AliCDBStorage* storage; TString Storage; if( TString(gSystem->Getenv("TOCDB")) == TString("kTRUE") ){ Storage = gSystem->Getenv("STORAGE"); if(!Storage.BeginsWith("local://") && !Storage.BeginsWith("alien://")) { Error(macroname,"STORAGE variable set to %s is not valid. Exiting\n",Storage.Data()); return; } storage = cdb->GetStorage(Storage.Data()); if(!storage){ Error(macroname,"Unable to open storage %s\n",Storage.Data()); return; } AliCDBPath path("GRP","Geometry","Data"); AliCDBEntry *entry = storage->Get(path.GetPath(),cdb->GetRun()); if(!entry) Fatal(macroname,"Could not get the specified CDB entry!"); entry->SetOwner(0); TGeoManager* geom = (TGeoManager*) entry->GetObject(); AliGeomManager::SetGeometry(geom); }else{ AliGeomManager::LoadGeometry(); //load geom from default CDB storage } // load FRAME full misalignment objects (if needed, the macro // for FRAME has to be ran in advance) and apply them to geometry AliCDBPath fpath("GRP","Align","Data"); AliCDBEntry *eFrame; if( TString(gSystem->Getenv("TOCDB")) == TString("kTRUE") ){ Info(macroname,"Loading FRAME alignment objects from CDB storage %s", Storage.Data()); eFrame = storage->Get(fpath.GetPath(),cdb->GetRun()); }else{ eFrame = cdb->Get(fpath.GetPath()); } if(!eFrame) Fatal(macroname,"Could not get the specified CDB entry!"); TClonesArray* arFrame = (TClonesArray*) eFrame->GetObject(); arFrame->Sort(); Int_t nvols = arFrame->GetEntriesFast(); Bool_t flag = kTRUE; for(Int_t j=0; j<nvols; j++) { AliAlignObj* alobj = (AliAlignObj*) arFrame->UncheckedAt(j); if (alobj->ApplyToGeometry() == kFALSE) flag = kFALSE; } if(!flag) Fatal(macroname,"Error in the application of FRAME objects"); // Sigmas for the chambers Double_t smdx = 0.3; // 3 mm Double_t smdy = 0.3; // 3 mm Double_t smdz = 0.3; // 3 mm Double_t smrx = 0.4 / 1000.0 / TMath::Pi()*180; // 0.4 mrad Double_t smry = 2.0 / 1000.0 / TMath::Pi()*180; // 2.0 mrad Double_t smrz = 0.4 / 1000.0 / TMath::Pi()*180; // 0.4 mrad // Truncation for the chambers Double_t cutSmdx = 3.0 * smdx; Double_t cutSmdy = 3.0 * smdy; Double_t cutSmdz = 3.0 * smdz; // Sigmas for the chambers Double_t chdx = 0.05; // 0.5 mm Double_t chdy = 0.1; // 1.0 mm Double_t chdz = 0.007; // 70 microns Double_t chrx = 0.0005 / 1000.0 / TMath::Pi()*180; // 0 mrad Double_t chry = 0.0005 / 1000.0 / TMath::Pi()*180; // 0 mrad Double_t chrz = 0.3 / 1000.0 / TMath::Pi()*180; // 0.3 mrad // Truncation for the chambers Double_t cutChdx = 1.0 * chdx; Double_t cutChdy = 1.0 * chdy; Double_t cutChdz = 0.14 * chdz; Int_t sActive[18]={1,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,1}; Double_t dx,dy,dz,rx,ry,rz; Int_t j=0; UShort_t volid; const char *symname; // create the supermodules' alignment objects for (int iSect; iSect<18; iSect++) { TString sm_symname(Form("TRD/sm%02d",iSect)); dx = AliMathBase::TruncatedGaus(0.0,smdx,cutSmdx); dy = AliMathBase::TruncatedGaus(0.0,smdy,cutSmdy); dz = AliMathBase::TruncatedGaus(0.0,smdz,cutSmdz); rx = gRandom->Rndm() * 2.0*smrx - smrx; ry = gRandom->Rndm() * 2.0*smry - smry; rz = gRandom->Rndm() * 2.0*smrz - smrz; if( (TString(gSystem->Getenv("REALSETUP")) == TString("kTRUE")) && !sActive[iSect] ) continue; new((*array)[j++]) AliAlignObjParams(sm_symname.Data(),0,dx,dy,dz,rx,ry,rz,kFALSE); } // apply supermodules' alignment objects Int_t smCounter=0; for(Int_t iSect=0; iSect<18; iSect++){ if( (TString(gSystem->Getenv("REALSETUP")) == TString("kTRUE")) && !sActive[iSect] ) continue; AliAlignObjParams* smobj = (AliAlignObjParams*)array->UncheckedAt(smCounter++); if(!smobj->ApplyToGeometry()){ Fatal(macroname,Form("application of full misalignment object for sector %d failed!",iSect)); return; } } // create the chambers' alignment objects ran = new TRandom(4357); Int_t chId; for (Int_t iLayer = AliGeomManager::kTRD1; iLayer <= AliGeomManager::kTRD6; iLayer++) { chId=-1; for (Int_t iSect = 0; iSect < 18; iSect++){ for (Int_t iCh = 0; iCh < 5; iCh++) { dx = AliMathBase::TruncatedGaus(0.0,chdx,cutChdx); dy = AliMathBase::TruncatedGaus(0.0,chdy,cutChdy); dz = AliMathBase::TruncatedGaus(0.0,chdz,cutChdz); rx = gRandom->Rndm() * 2.0*chrx - chrx; ry = gRandom->Rndm() * 2.0*chry - chry; rz = gRandom->Rndm() * 2.0*chrz - chrz; chId++; if ((iSect==13 || iSect==14 || iSect==15) && iCh==2) continue; volid = AliGeomManager::LayerToVolUID(iLayer,chId); if( (TString(gSystem->Getenv("REALSETUP")) == TString("kTRUE")) && !sActive[iSect] ) continue; symname = AliGeomManager::SymName(volid); new((*array)[j++]) AliAlignObjParams(symname,volid,dx,dy,dz,rx,ry,rz,kFALSE); } } } if( TString(gSystem->Getenv("TOCDB")) != TString("kTRUE") ){ // save on file const char* filename = "TRDfullMisalignment.root"; TFile f(filename,"RECREATE"); if(!f){ Error(macroname,"cannot open file for output\n"); return; } Info(macroname,"Saving alignment objects to the file %s", filename); f.cd(); f.WriteObject(array,"TRDAlignObjs","kSingleKey"); f.Close(); }else{ // save in CDB storage Info(macroname,"Saving alignment objects in CDB storage %s", Storage.Data()); AliCDBMetaData* md = new AliCDBMetaData(); md->SetResponsible("Dariusz Miskowiec"); md->SetComment("Full misalignment for TRD"); md->SetAliRootVersion(gSystem->Getenv("ARVERSION")); AliCDBId id("TRD/Align/Data",0,AliCDBRunRange::Infinity()); storage->Put(array,id,md); } array->Delete(); }
Bool_t MakeCosmicTriggersEntry(const char *fileName, const char* cdbUri) { const char* macroname = "MakeCosmicTriggersEntry.C"; if (gSystem->AccessPathName(fileName)) { Error(macroname,Form("file (%s) not found", fileName)); return kFALSE; } ifstream *file = new ifstream(fileName); if (!*file) { Error(macroname,Form("Error opening file (%s) !",fileName)); file->close(); delete file; return kFALSE; } THashTable *table = new THashTable(); table->SetName("List of defined cosmic triggers"); TString strLine; while (strLine.ReadLine(*file)) { if (strLine.BeginsWith("#")) continue; strLine.ReplaceAll(" ",""); strLine.ReplaceAll("\t",""); if (strLine.IsNull()) continue; TObjString *obj = new TObjString(strLine.Data()); table->Add(obj); } file->close(); delete file; // create OCDB storage TString Storage(cdbUri); if(!Storage.BeginsWith("local://") && !Storage.BeginsWith("alien://")) { Error(macroname,"STORAGE variable set to %s is not valid. Exiting\n",Storage.Data()); return kFALSE; } AliCDBManager* cdb = AliCDBManager::Instance(); AliCDBStorage* storage = cdb->GetStorage(Storage.Data()); if(!storage){ Error(macroname,"Unable to open storage %s\n",Storage.Data()); return kFALSE; } AliCDBMetaData* md = new AliCDBMetaData(); md->SetResponsible("Federico Antinori"); md->SetComment("List of the defined cosmic triggers. It is used in order to steer the reconstruction, namely in the selection of the proper event specie. It is maintained and updated by the trigger coordinator."); // Get root and AliRoot versions and set them in the metadata const char* rootv = gROOT->GetVersion(); TString av(ALIROOT_VERSION); TString revnum(ALIROOT_REVISION); av+=" - revision: "; av+=revnum; md->SetAliRootVersion(av.Data()); AliCDBId id("GRP/Calib/CosmicTriggers",0,AliCDBRunRange::Infinity()); Info(macroname,"Saving the list of defined cosmic triggers in the OCDB storage \"%s\"",Storage.Data()); storage->Put(table,id,md); table->Delete(); delete table; return kTRUE; }
void MakeACORDEZeroMisAlignment(){ // Create TClonesArray of zero misalignment objects for ACORDE // const char* macroname = "MakeACORDEZeroMisAlignment.C"; // Activate CDB storage and load geometry from CDB AliCDBManager* cdb = AliCDBManager::Instance(); if(!cdb->IsDefaultStorageSet()) cdb->SetDefaultStorage("local://$ALICE_ROOT/OCDB"); cdb->SetRun(0); AliCDBStorage* storage; //load geom from local file till ACORDE is not switched on by default in standard config-files if( TString(gSystem->Getenv("TOCDB")) == TString("kTRUE") ){ TString Storage = gSystem->Getenv("STORAGE"); if(!Storage.BeginsWith("local://") && !Storage.BeginsWith("alien://")) { Error(macroname,"STORAGE variable set to %s is not valid. Exiting\n",Storage.Data()); return; } storage = cdb->GetStorage(Storage.Data()); if(!storage){ Error(macroname,"Unable to open storage %s\n",Storage.Data()); return; } AliCDBPath path("GRP","Geometry","Data"); AliCDBEntry *entry = storage->Get(path.GetPath(),cdb->GetRun()); if(!entry) Fatal(macroname,"Could not get the specified CDB entry!"); entry->SetOwner(0); TGeoManager* geom = (TGeoManager*) entry->GetObject(); AliGeomManager::SetGeometry(geom); }else{ AliGeomManager::LoadGeometry(); //load geom from default CDB storage } // AliGeomManager::LoadGeometry("geometry.root"); TClonesArray *array = new TClonesArray("AliAlignObjParams",64); TClonesArray &alobj = *array; TRandom *rnd = new TRandom(4321); Int_t j = 0; Double_t dx=0, dy=0, dz=0, dpsi=0, dtheta=0, dphi=0; // RS = local // sigma translation // sigma rotation TString symname; TString basename = "ACORDE/Array"; Int_t iIndex=0; AliGeomManager::ELayerID iLayer = AliGeomManager::kInvalidLayer; UShort_t volid = AliGeomManager::LayerToVolUID(iLayer,iIndex); for (Int_t imod=0; imod<60; imod++){ symname = basename; symname += imod; new(alobj[j++]) AliAlignObjParams(symname, volid, dx, dy, dz,dpsi, dtheta, dphi, kFALSE); } if( TString(gSystem->Getenv("TOCDB")) != TString("kTRUE") ){ // save on file const char* filename = "ACORDEZeroMisalignment.root"; TFile f(filename,"RECREATE"); if(!f){ Error(macroname,"cannot open file for output\n"); return; } Info(macroname,"Saving alignment objects to the file %s", filename); f.cd(); f.WriteObject(array,"ACORDEAlignObjs","kSingleKey"); f.Close(); }else{ // save in CDB storage AliCDBMetaData* md = new AliCDBMetaData(); md->SetResponsible("E. Cuautle & M. Rodriguez"); md->SetComment("Zero misalignment for ACORDE"); md->SetAliRootVersion(gSystem->Getenv("$ARVERSION")); AliCDBId id("ACORDE/Align/Data",0,AliCDBRunRange::Infinity()); storage->Put(array,id,md); } array->Delete(); }
/** * Generates a default CDB entry for the trigger menu in the given CDB storage * (local by default). * \param cdbPath The path to the default CDB storage. */ void HM_PHYSICS_V0001( const char* cdbPath = "local://$ALICE_ROOT/OCDB", Int_t version = 0, Int_t firstRun = 0, Int_t lastRun = AliCDBRunRange::Infinity() ) { gSystem->Load("libAliHLTTrigger"); // Setup the CDB default storage and run number. AliCDBManager* cdbManager = AliCDBManager::Instance(); if (cdbManager == NULL) { cerr << "ERROR: Global CDB manager object does not exist." << endl; return; } AliCDBStorage* storage = cdbManager->GetStorage(cdbPath); if (storage == NULL) { cerr << "ERROR: Could not get storage for: " << cdbPath << endl; return; } // ///////////////////////////////////////////////////////////////////////////////////////// // Create the trigger menu. AliHLTGlobalTriggerConfig config("HM-COSMICS-V0001"); config.AddSymbol("domainAll", "AliHLTTriggerDomain", "", "AliHLTTriggerDomain(\"*******:***\")"); // ///////////////////////////////////////////////////////////////////////////////////////// // the domain definitions for the global HLT output and the HLT DDLs //config.AddSymbol("domainHLTOUT", "AliHLTTriggerDomain", "", "AliHLTTriggerDomain(\"*******:HLT \")"); config.AddSymbol("domainHLTDDL", "AliHLTTriggerDomain", "", "AliHLTTriggerDomain(\"DAQRDOUT:HLT\\0\")"); // some explicite domain entries config.AddSymbol("domainTObject" , "AliHLTTriggerDomain", "", "AliHLTTriggerDomain(\"ROOTTOBJ:HLT \")"); config.AddSymbol("domainESD" , "AliHLTTriggerDomain", "", "AliHLTTriggerDomain(\"ALIESDV0:HLT \")"); config.AddSymbol("domainHistogram" , "AliHLTTriggerDomain", "", "AliHLTTriggerDomain(\"ROOTHIST:HLT \")"); config.AddSymbol("domainSPDCluster", "AliHLTTriggerDomain", "", "AliHLTTriggerDomain(\"CLUSTERS:ISPD\")"); config.AddSymbol("domainSDDCluster", "AliHLTTriggerDomain", "", "AliHLTTriggerDomain(\"CLUSTERS:ISDD\")"); config.AddSymbol("domainSSDCluster", "AliHLTTriggerDomain", "", "AliHLTTriggerDomain(\"CLUSTERS:ISSD\")"); config.AddSymbol("domainTPCCluster", "AliHLTTriggerDomain", "", "AliHLTTriggerDomain(\"CLUSTERS:TPC \")"); // an explicite HLTOUT selection which avoids wildcards config.AddSymbol("domainHLTOUT", "AliHLTTriggerDomain", "", "domainTObject | " "domainESD | " "domainHistogram | " "domainSPDCluster | " "domainSDDCluster | " "domainSSDCluster | " "domainTPCCluster" ); // ///////////////////////////////////////////////////////////////////////////////////////// // -- DETECTOR READOUT DOMAINS config.AddSymbol("domainSPDDDL", "AliHLTTriggerDomain", "", "AliHLTTriggerDomain(\"DAQRDOUT:SPD\\0\")"); config.AddSymbol("domainSDDDDL", "AliHLTTriggerDomain", "", "AliHLTTriggerDomain(\"DAQRDOUT:SDD\\0\")"); config.AddSymbol("domainSSDDDL", "AliHLTTriggerDomain", "", "AliHLTTriggerDomain(\"DAQRDOUT:SSD\\0\")"); config.AddSymbol("domainTPCDDL", "AliHLTTriggerDomain", "", "AliHLTTriggerDomain(\"DAQRDOUT:TPC\\0\")"); config.AddSymbol("domainTRDDDL", "AliHLTTriggerDomain", "", "AliHLTTriggerDomain(\"DAQRDOUT:TRD\\0\")"); config.AddSymbol("domainTOFDDL", "AliHLTTriggerDomain", "", "AliHLTTriggerDomain(\"DAQRDOUT:TOF\\0\")"); config.AddSymbol("domainHMPDDL", "AliHLTTriggerDomain", "", "AliHLTTriggerDomain(\"DAQRDOUT:HMP\\0\")"); config.AddSymbol("domainPHSDDL", "AliHLTTriggerDomain", "", "AliHLTTriggerDomain(\"DAQRDOUT:PHS\\0\")"); config.AddSymbol("domainCPVDDL", "AliHLTTriggerDomain", "", "AliHLTTriggerDomain(\"DAQRDOUT:CPV\\0\")"); config.AddSymbol("domainPMDDDL", "AliHLTTriggerDomain", "", "AliHLTTriggerDomain(\"DAQRDOUT:PMD\\0\")"); config.AddSymbol("domainMCHDDL", "AliHLTTriggerDomain", "", "AliHLTTriggerDomain(\"DAQRDOUT:MCH\\0\")"); config.AddSymbol("domainMTRDDL", "AliHLTTriggerDomain", "", "AliHLTTriggerDomain(\"DAQRDOUT:MTR\\0\")"); config.AddSymbol("domainFMDDDL", "AliHLTTriggerDomain", "", "AliHLTTriggerDomain(\"DAQRDOUT:FMD\\0\")"); config.AddSymbol("domainT00DDL", "AliHLTTriggerDomain", "", "AliHLTTriggerDomain(\"DAQRDOUT:T00\\0\")"); config.AddSymbol("domainV00DDL", "AliHLTTriggerDomain", "", "AliHLTTriggerDomain(\"DAQRDOUT:V00\\0\")"); config.AddSymbol("domainZDCDDL", "AliHLTTriggerDomain", "", "AliHLTTriggerDomain(\"DAQRDOUT:ZDC\\0\")"); config.AddSymbol("domainACODDL", "AliHLTTriggerDomain", "", "AliHLTTriggerDomain(\"DAQRDOUT:ACO\\0\")"); config.AddSymbol("domainCTPDDL", "AliHLTTriggerDomain", "", "AliHLTTriggerDomain(\"DAQRDOUT:TRI\\0\")"); config.AddSymbol("domainEMCDDL", "AliHLTTriggerDomain", "", "AliHLTTriggerDomain(\"DAQRDOUT:EMC\\0\")"); // ///////////////////////////////////////////////////////////////////////////////////////// // -- DETECTOR READOUT DOMAINS - SPECIAL config.AddSymbol("domainALLDDL", "AliHLTTriggerDomain", "", "AliHLTTriggerDomain(\"DAQRDOUT:***\\0\")"); // ///////////////////////////////////////////////////////////////////////////////////////// // NOTE: always make sure that the global HLT output and the HLT DDLs are included // in the readout, i.e. add domainHLTOUT|domainHLTDDL to the trigger domain // -- BarrelMultiplicity config.AddItem( "BarrelMultiplicityTrigger", "domainHLTOUT|domainALLDDL", "H-TRACK_MULTIPLICITY-V0002.001-CENTRAL-ALL" ); config.AddItem( "BarrelHighMultiplicity", "domainHLTOUT|domainALLDDL", "H-TRACK_MULTIPLICITY-V0002.002-CENTRAL-ALL" ); config.AddItem( "BarrelPt_v01", "domainHLTOUT|domainALLDDL", "H-TRACK_MULTIPLICITY-V0002.003-CENTRAL-ALL" ); config.AddItem( "BarrelPt_v01", "domainHLTOUT|domainALLDDL", "H-TRACK_MULTIPLICITY-V0002.004-CENTRAL-ALL" ); config.AddItem( "BarrelPt_v01", "domainHLTOUT|domainALLDDL", "H-TRACK_MULTIPLICITY-V0002.005-CENTRAL-ALL" ); // -- Min bias trigger config.AddItem( "true", "domainALLDDL|domainHLTOUT", 10, "H-MINBIAS_SCALE_DOWN-V0002.001-CENTRAL-ALL" ); // ///////////////////////////////////////////////////////////////////////////////////////// // default domain in case there is no global trigger // readout the output of the reconstruction // this refers to the domain domainHLTOUT|domainHLTDDL config.SetDefaultTriggerDescription("No HLT global trigger"); // HLT payload also stored for not triggered events config.DefaultTriggerDomain().Add("*******", "HLT "); AliHLTReadoutList readoutlist; readoutlist.Enable(AliHLTReadoutList::kHLT); config.DefaultTriggerDomain().Add(readoutlist); TObject* menu = AliHLTGlobalTriggerConfig::Menu()->Clone(); menu->Print(); // ///////////////////////////////////////////////////////////////////////////////////////// // Write the trigger menu object to the CDB. AliCDBId id("HLT/ConfigHLT/HLTGlobalTrigger", firstRun, lastRun, version); AliCDBMetaData* metaData = new AliCDBMetaData(); metaData->SetResponsible("ALICE HLT [email protected]"); metaData->SetComment("HM-PHYSICS-V0001"); storage->Put(menu, id, metaData); // ///////////////////////////////////////////////////////////////////////////////////////// // ///////////////////////////////////////////////////////////////////////////////////////// // ///////////////////////////////////////////////////////////////////////////////////////// // // component configurations gROOT->LoadMacro("$ALICE_ROOT/HLT/exa/makeComponentConfigurationObject.C"); // ///////////////////////////////////////////////////////////////////////////////////////// // configuration of BarrelMultiplicityTrigger instances makeComponentConfigurationObject("HLT/ConfigHLT/BarrelMultiplicityTrigger", "-mintracks 10", cdbPath, firstRun, lastRun); makeComponentConfigurationObject("HLT/ConfigHLT/BarrelHighMultiplicity", "-mintracks 100" , cdbPath, firstRun, lastRun); makeComponentConfigurationObject("HLT/ConfigHLT/BarrelPt_v01", "-mintracks 1 -minpt 0.5" , cdbPath, firstRun, lastRun); makeComponentConfigurationObject("HLT/ConfigHLT/BarrelPt_v02", "-mintracks 1 -minpt 1.0" , cdbPath, firstRun, lastRun); makeComponentConfigurationObject("HLT/ConfigHLT/BarrelPt_v03", "-mintracks 1 -minpt 5.0" , cdbPath, firstRun, lastRun); }
void MergeSetsOfAlignObjs(const char* filename1, const char* filename2, const char* det="ITS") { // example macro: building an array by merging the non-SSD entries // from one file (or OCDB entry) with the remaining SSD entries taken // from another file (or OCDB entry); the first two arguments can be local filenames // or URLs of the OCDB folders // const char* macroname = "MergeSetsOfAlignObjs"; TClonesArray* array1 = 0; TClonesArray* array2 = 0; TString arName(det); arName+="AlignObjs"; TString path(det); path+="/Align/Data"; TString f1(filename1); TString f2(filename2); AliCDBStorage* stor1 = 0; AliCDBStorage* stor2 = 0; Bool_t fromOcdb1=kFALSE; Bool_t fromOcdb2=kFALSE; if(f1.Contains("alien://folder=") || f1.Contains("local://")) fromOcdb1=kTRUE; if(f2.Contains("alien://folder=") || f2.Contains("local://")) fromOcdb2=kTRUE; AliCDBManager* cdb = AliCDBManager::Instance(); cdb->SetDefaultStorage("local://$ALICE_ROOT/OCDB"); cdb->SetRun(0); if(fromOcdb1){ stor1 = cdb->GetStorage(f1.Data()); AliCDBEntry* entry = stor1->Get(path.Data(),0); array1 = (TClonesArray*) entry->GetObject(); }else{ TFile* filein1 = TFile::Open(f1.Data(),"READ"); if(!filein1) { Info(macroname,Form("Unable to open file %s! Exiting ...", f1.Data())); return; } array1 = (TClonesArray*) filein1->Get(arName.Data()); } if(array1){ Info(macroname,Form("First array has %d entries", array1->GetEntriesFast())); }else{ Info(macroname,"Unable to get first array! Exiting ..."); return; } if(fromOcdb2){ stor2 = cdb->GetStorage(f2.Data()); AliCDBEntry* entry = stor2->Get(path.Data(),0); array2 = (TClonesArray*) entry->GetObject(); }else{ TFile* filein2 = TFile::Open(f2.Data(),"READ"); if(!filein2) { Info(macroname,Form("Unable to open file %s! Exiting ...", f2.Data())); return; } array2 = (TClonesArray*) filein2->Get(arName.Data()); } if(array2){ Info(macroname,Form("Second array has %d entries", array2->GetEntriesFast())); }else{ Info(macroname,"Unable to get second array! Exiting ..."); return; } TClonesArray *mergedArr = new TClonesArray("AliAlignObjParams",3000); Info(macroname,"Merging objects for SPD and SDD from the first array ..."); // SSD starts from 500 for(Int_t i=0; i<500; i++) { (*mergedArr)[i] = (AliAlignObjParams*) array1->UncheckedAt(i); } Info(macroname,"Merging objects for SSD from the second array ..."); for(Int_t i=500; i<array2->GetEntriesFast(); i++) { (*mergedArr)[i] = (AliAlignObjParams*) array2->UncheckedAt(i); } TString foutName("merged"); foutName+=det; foutName+="Alignment.root"; Info(macroname,Form("... in a single array into the file %s", foutName.Data())); TFile* fileout = TFile::Open(foutName.Data(),"RECREATE"); fileout->cd(); fileout->WriteObject(mergedArr,arName.Data(),"kSingleKey"); fileout->Close(); mergedArr->Delete(); }
void MakeTOFResMisAlignment() { // // Create TClonesArray of residual misalignment objects for TOF // const char* macroname = "MakeTOFResMisAlignment.C"; TClonesArray *array = new TClonesArray("AliAlignObjParams",2000); TClonesArray &alobj = *array; // Activate CDB storage and load geometry from CDB AliCDBManager* cdb = AliCDBManager::Instance(); if (!cdb->IsDefaultStorageSet()) cdb->SetDefaultStorage("local://$ALICE_ROOT/OCDB"); cdb->SetRun(0); AliCDBStorage* storage; TString Storage; if( TString(gSystem->Getenv("TOCDB")) == TString("kTRUE") ){ Storage = gSystem->Getenv("STORAGE"); if (!Storage.BeginsWith("local://") && !Storage.BeginsWith("alien://")) { Error(macroname,"STORAGE variable set to %s is not valid. Exiting\n",Storage.Data()); return; } storage = cdb->GetStorage(Storage.Data()); if (!storage) { Error(macroname,"Unable to open storage %s\n",Storage.Data()); return; } AliCDBPath path("GRP","Geometry","Data"); AliCDBEntry *entry = storage->Get(path.GetPath(),cdb->GetRun()); if (!entry) Fatal(macroname,"Could not get the specified CDB entry!"); entry->SetOwner(0); TGeoManager* geom = (TGeoManager*) entry->GetObject(); AliGeomManager::SetGeometry(geom); } else AliGeomManager::LoadGeometry(); //load geom from default CDB storage AliGeomManager::ELayerID idTOF = AliGeomManager::kTOF; Int_t j=0; Int_t nSectors=18; //Produce objects for TOF supermodules Int_t iIndex=0; //let all modules have index=0 in a layer with no LUT AliGeomManager::ELayerID iLayer = AliGeomManager::kInvalidLayer; UShort_t dvoluid = AliGeomManager::LayerToVolUID(iLayer,iIndex); //dummy vol id Double_t smdx, smdy, smdz=0., dpsi=0., dtheta, dphi=0.; for(Int_t isect=0; isect<nSectors; isect++) { TString symname(Form("TOF/sm%02d",isect)); new(alobj[j++]) AliAlignObjParams(symname.Data(), dvoluid, smdx, smdy, smdz, dpsi, dtheta, dphi, kFALSE); } Int_t strId=-1; Double_t dx=0., dy=0., dz=0., dpsi=0., dtheta=0., dphi=0.; //TRandom *rnd = new TRandom(4357); Double_t sigmatr = 0.1; // sigma (in cm) for shift w.r.t. local ideal RS Int_t nstrA=15; Int_t nstrB=19; Int_t nstrC=19; Int_t nStrips=nstrA+2*nstrB+2*nstrC; Double_t cuty=0., cutz=0., cut=3*sigmatr; for (Int_t isect = 0; isect < nSectors; isect++) { for (Int_t istr = 1; istr <= nStrips; istr++) { //dy = rnd->Gaus(0.,sigmatr); //dz = rnd->Gaus(0.,sigmatr); //strId++; switch (istr) { case 25: case 29: case 63: case 67: cuty = sigmatr*0.6; dy = AliMathBase::TruncatedGaus(0., sigmatr, cut, cuty); dz = AliMathBase::TruncatedGaus(0., sigmatr, cut); strId++; break; /* case 38: cuty = sigmatr*2.5; cutz = sigmatr*2.5; dy = AliMathBase::TruncatedGaus(0., sigmatr, cut, cuty); dz = AliMathBase::TruncatedGaus(0., sigmatr, cut, cutz); strId++; break; case 54: cuty = sigmatr*2.5; cutz = sigmatr*2.5; dy = AliMathBase::TruncatedGaus(0., sigmatr, cut, cuty); dz = AliMathBase::TruncatedGaus(0., sigmatr, cutz, cut); strId++; break; */ default: dy = AliMathBase::TruncatedGaus(0., sigmatr, cut); dz = AliMathBase::TruncatedGaus(0., sigmatr, cut); strId++; break; } if ((isect==13 || isect==14 || isect==15) && (istr >= 39 && istr <= 53)) continue; new(alobj[j++]) AliAlignObjParams(AliGeomManager::SymName(idTOF,strId), AliGeomManager::LayerToVolUID(idTOF,strId), dx, dy, dz, dpsi, dtheta, dphi, kFALSE); } } if( TString(gSystem->Getenv("TOCDB")) != TString("kTRUE") ) { // save on file const char* filename = "TOFresidualMisalignment.root"; TFile f(filename,"RECREATE"); if(!f){ Error(macroname,"cannot open file for output\n"); return; } Info(macroname,"Saving alignment objects to the file %s", filename); f.cd(); f.WriteObject(array,"TOFAlignObjs","kSingleKey"); f.Close(); } else { // save in CDB storage AliCDBMetaData* md = new AliCDBMetaData(); md->SetResponsible("Silvia Arcelli"); md->SetComment("Residual misalignment for TOF, sigmatr=1mm in the local RS"); md->SetAliRootVersion(gSystem->Getenv("ARVERSION")); AliCDBId id("TOF/Align/Data",0,AliCDBRunRange::Infinity()); storage->Put(array,id,md); } array->Delete(); }
void MakeZDCFullMisAlignment(){ // Create TClonesArray of full misalignment objects for ZDC // const char* macroname = "MakeZDCFullMisAlignment.C"; TClonesArray *array = new TClonesArray("AliAlignObjParams",10); TClonesArray &alobj = *array; Double_t dx=0., dy=2., dz=0.; Double_t dpsi=0., dtheta=0., dphi=0.; const char *ZDCCn="ZDC/NeutronZDC_C"; const char *ZDCCp="ZDC/ProtonZDC_C"; const char *ZDCAn="ZDC/NeutronZDC_A"; const char *ZDCAp="ZDC/ProtonZDC_A"; Int_t iIndex=0; //let all modules have index=0 in a layer with no LUT AliGeomManager::ELayerID iLayer = AliGeomManager::kInvalidLayer; UShort_t volid = AliGeomManager::LayerToVolUID(iLayer,iIndex); new(alobj[0]) AliAlignObjParams(ZDCCn, volid, dx, dy, dz, dpsi, dtheta, dphi, kTRUE); new(alobj[1]) AliAlignObjParams(ZDCCp, volid, dx, dy, dz, dpsi, dtheta, dphi, kTRUE); new(alobj[2]) AliAlignObjParams(ZDCAn, volid, dx, dy, dz, dpsi, dtheta, dphi, kTRUE); new(alobj[3]) AliAlignObjParams(ZDCAp, volid, dx, dy, dz, dpsi, dtheta, dphi, kTRUE); if( TString(gSystem->Getenv("TOCDB")) != TString("kTRUE") ){ // save in file const char* filename = "ZDCfullMisalignment.root"; TFile f(filename,"RECREATE"); if(!f){ Error(macroname,"cannot open file for output\n"); return; } Info(macroname,"Saving alignment objects to the file %s", filename); f.cd(); f.WriteObject(array,"ZDCAlignObjs","kSingleKey"); f.Close(); }else{ // save in CDB storage TString Storage = gSystem->Getenv("STORAGE"); if(!Storage.BeginsWith("local://") && !Storage.BeginsWith("alien://")) { Error(macroname,"STORAGE variable set to %s is not valid. Exiting\n",Storage.Data()); return; } Info(macroname,"Saving alignment objects in CDB storage %s", Storage.Data()); AliCDBManager* cdb = AliCDBManager::Instance(); AliCDBStorage* storage = cdb->GetStorage(Storage.Data()); if(!storage){ Error(macroname,"Unable to open storage %s\n",Storage.Data()); return; } AliCDBMetaData* md = new AliCDBMetaData(); md->SetResponsible("Chiara Oppedisano"); md->SetComment("Alignment objects for ZDC full misalignment"); md->SetAliRootVersion(gSystem->Getenv("ARVERSION")); AliCDBId id("ZDC/Align/Data",0,AliCDBRunRange::Infinity()); storage->Put(array,id,md); } array->Delete(); }
void SetCalibDB() { Int_t firstRun = 0; // What is this Int_t lastRun = 9999999; Int_t beamPeriod = 1; char* objFormat = ""; TString DBFolder ="local://$ALICE_ROOT/OCDB/EMCAL/beamtest07"; firstRun = 0; lastRun = 999999999; objFormat = "EMCAL beam test 2007 gain factors and pedestals"; AliEMCALCalibData *calibda=new AliEMCALCalibData("EMCAL"); Float_t fADCpedestal = 0.009; Float_t fADCchannel = 0.0153; // 250 GeV / (16*1024) Float_t ped = 0.; Float_t cc = fADCchannel; Int_t nSMod = 12; Int_t nCol = 48; Int_t nRow = 24; Int_t nRow2 = 12; //Modules 11 and 12 are half modules Int_t colOffset = 40; Int_t rowOffset = 8; Double_t gain_ratios[8][8] = { 15.9289, 16.2141, 16.1204, 15.9118, 15.9363, 15.9402, 16.2257, 16.0097, 16.058, 16.1116, 16.039, 16.4167, 16.2148, 16.1399, 16.1515, 16.2194, 15.9082, 16.0776, 16.0496, 16.2353, 15.8054, 16.2158, 16.2344, 16.1023, 15.8903, 16.2387, 16.13, 16.157, 16.0685, 16.172, 16.3495, 16.3887, 16.2842, 16.049, 16.4328, 16.3954, 16.4226, 15.7254, 16.1634, 16.3182, 16.4216, 16.1201, 16.0000, 16.2305, 16.0266, 16.3573, 16.1382, 16.237, 16.2981, 16.1796, 15.854, 16.4189, 15.6425, 16.287, 16.3293, 16.6308, 16.2469, 16.0412, 16.252, 16.3367, 16.1412, 16.0646, 16.3996, 16.3479 }; Float_t gains[8][8] = { 4.43274, 6.7283, 8.23733, 3.59882, 4.2717, 2.85658, 4.86389, 2.71961, 3.05523, 3.02552, 3.50615, 3.26494, 6.69024, 2.51058, 8.42275, 2.83824, 8.05074, 5.36051, 4.36794, 4.73468, 9.9684, 5.5, 6.42999, 5.6, 7.37306, 5.28314, 5.27662, 5.26982, 3.29468, 5.23107, 6.40948, 4.06855, 4.09685, 5.37323, 5.32816, 5.89487, 9.2395, 5.3, 4.77239, 5.0, 4.85923, 3.44063, 4.74517, 5.28772, 3.80171, 4.84878, 5.12039, 4.59205, 2.34745, 3.16971, 3.61231, 3.65195, 3.43496, 3.4, 3.65678, 2.9, 2.71648, 3.39577, 3.40896, 3.31741, 3.24286, 3.51346, 2.61503, 3.44246 }; for(Int_t supermodule=0; supermodule < nSMod; supermodule++) { for(Int_t column=0; column< nCol; column++) { if(supermodule >= 10) nRow = nRow2; for(Int_t row=0; row< nRow; row++) { if(supermodule < 2 && column > 39 && row > 7 && row < 16) { cc = 1./gain_ratios[column-colOffset][row-rowOffset]/gains[column-colOffset][row-rowOffset]; cout << "column = " << column << " column - colOffset = " << column-colOffset << " row = " << " row Offset = " << row-rowOffset << endl; } calibda->SetADCchannel(supermodule,column,row,cc); calibda->SetADCpedestal(supermodule,column,row,ped); } } } //Store calibration data into database AliCDBMetaData md; md.SetComment(objFormat); md.SetBeamPeriod(beamPeriod); md.SetResponsible("David Silvermyr"); AliCDBId id("EMCAL/Calib/Data",firstRun,lastRun); // create in // EMCAL/Calib/Data DBFolder AliCDBManager* man = AliCDBManager::Instance(); AliCDBStorage* loc = man->GetStorage(DBFolder.Data()); loc->Put(calibda, id, &md); }