No it is not. Constants are set in the genesis block and then changed only by amendments. They are stored in the context, which is the state passed to and returned by the protocol when it validates a block. That's why the RPC requires a block and inspects its context to read the constants.
To compute the hash:
Read the TEZOS_PROTOCOL JSON file, e.g. src/proto_003_PsddFKi3/lib_protocol/src/TEZOS_PROTOCOL. It's JSON like this:
For each module name, convert it to lowercase and append ".ml" and ".mli" to find ...
There may be some confusion here. The command you're copy/pasting is the command to launch (in the context of a sandbox setting) a brand new fresh network that would immediately run the Carthage protocol from its genesis block. Is this really what you want to do?
When (if) we move into the "Testing period" the chain is automatically forked. No action required, except for bakers. Bakers need to fire up "test-bakers" for the test-chain with a different "PROTOCOL" parameter.
If you want to send transaction or query the test chain during the testing period replace main with test for your RPC calls or add --chain test ...