Problem with TDacheFile

Hi all,

we recently set up a storage element at our institute that’s e.g. accessible via dcache.
To be able to really make use of it, I’m trying to access files via dcache in root.
However I’m having problems getting this to work…

In the given case I have a testfile at this url:
gsidcap://maigrid-se1.physik.uni-mainz. … dD3PD.root
(sorry for the longish filename)

E.g. dccp’ing this file somewhere else works fine:
dccp gsidcap://maigrid-se1.physik.uni-mainz. … dD3PD.root /tmp/eckweiler/test.root
226536718 bytes in 12 seconds (18435.61 KB/sec)

However in root I don’t get it accessed:
root [0] TDCacheFile *f = new TDCacheFile(“gsidcap://”)
Error in TDCacheFile::TDCacheFile: file pnfs/ does not exist

Weird enough, the CheckFile-method seems to see the file:
root [1] TDCacheFile::CheckFile(“gsidcap://”)

Unfortunately our admins are pretty new to these issues as well.
I couldn’t really find any documentation on this, neither on the usual root-pages nor from dcache directly.
Is there a way to trigger some debug output for the DCache part?

Is there something special to be done for the root-setup?

Glad about any help!

Thanks in advance,


I believe this problem is due to the fact that “gsidcap:” is not a protocol recognized by default
by ROOT. TDCacheFile::CheckFile passes it directly to the dcache calls, so it works.
The TDCacheFile constructor tries to check it the file exists with TSystem::AccessPathName
(equivalent of Unix access) which should go via TDCacheSystem::AccessPathName. However
this fails because the protocol is not recognized by the plugin-handler.

If this interpretation is true, you should be able to workaround the problem by first calling

root [] gPluginMgr->AddHandler("TSystem", "^gsidcap:", "TDCacheSystem", "DCache", "TDCacheSystem()");

in your ROOT shell.

If this does not work then open a ticket in ROOT Savannah so that the dcache interface author can
process it.

G. Ganis


thanks for the reply.
Unfortunately adding this plugin doesn’t change anything:

root [0] gPluginMgr->AddHandler(“TSystem”, “^gsidcap:”, “TDCacheSystem”, “DCache”, “TDCacheSystem()”); root [1] TDCacheFile *f = new TDCacheFile(“gsidcap://”)
Error in TDCacheFile::TDCacheFile: file pnfs/ does not exist

I had already tried replacing gsidcap by dcap or the analogue dcache: path, but none of those gave really different results.


I’ve forwarded this post to Tigran, one of the dCache developers and author of the ROOT dcache plugin. He will follow up on this.

Cheers, Fons.

Hi Sebastian,

could you please tell the ROOT version which you have?



we’re using 5.26.00.


There was a bug in TDCacheFile which is fixed in v5-26-00b